Java注解

1、java 常见注解

@Override
@Deprecated 过时的方法
@SuppressWarnnings 抑制警告

2、常见的第三方注解

Spring
@Autowired
@Service
@Repository
Mybatis
@InsertProvider
@UpdateProvider
@Options

3、注解分类

3.1按来源

jdk
第三方
自定义

3.2 按运行机制

源码
编译时
运行时

4、自定义注解

注解定义

package com.winning.hispay.api.v1;

import java.lang.annotation.*;

/**
 * @author
 * @Description
 * @Date 2022-01-22
 **/
//作用域  type 类 、接口  field 字段声明
@Target({ElementType.TYPE,ElementType.METHOD})
//生命周期 source 只在源码显示,编译时会丢弃  class 编译时会记录到class中 运行时忽略 runtime 运行时存在 可通过反射读取
@Retention(RetentionPolicy.RUNTIME)
//允许注解继承 当查询一个类上的注解时 如果类上没有这个注解,则会自动查找父类一直找到object为止,如果找到了就会使用。接口上的注释无效。
@Inherited
//生成javadoc的时候会包含注解信息
@Documented
//使用@interface关键字定义注解
public @interface TEST {
    //成员类型是受限的,合法的类型包括:基本数据类型、String、Class、Annotation、Enumeration。比如Map就会报错
    //如果只有一个成员建议使用value(),因为在调用的时候 程序会获取value的值
    //如果没有成员 注解就称为标识注解
    ///成员以《无参》《无异常》方式声明

    String value();
    //String desc();

    //可以给默认值
    //int age() default 18;
}

解析注解

package com.winning.hispay.api.v1;

import java.lang.reflect.Method;

/**
 * @author
 * @Description
 * 解析注解 解析的只能是 @Retention(RetentionPolicy.RUNTIME) 运行时的,否则解析不到
 * @Date 2022-01-23
 **/
public class ParseAnno {
    public static void main(String[] args) {
        try {
            //1、加载类
            Class aClass = Class.forName("com.winning.hispay.api.v1.Brother");
            //2、找到类上注解
            boolean isExist =aClass.isAnnotationPresent(TEST.class);
            if (isExist){
                //3、获取注解实例
                TEST t= (TEST) aClass.getAnnotation(TEST.class);
                System.out.println(t.value());
            }

            //4、找到方法上的注解
            Method[] ms=aClass.getMethods();
            for (Method method:ms) {
                boolean isMExist = method.isAnnotationPresent(TEST.class);
                if(isMExist){
                    TEST t1 =method.getAnnotation(TEST.class);
                    System.out.println(t1.value());
                }
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值