java注解

1. 什么是注解?

        注解是jdk1.5以后提出的,是用在代码里的特殊标记,可以在 编译、类加载,运行时,被读取,并执行相应的处理。

2. java提供的基本注解

  • @Override: 限定父类重写方法
  • @Deprecated: 标示着方法已过时,编辑器里会提出警告(删除线)
  • @SuppressWarnings: 取消编辑器的警告

3. 注解的本质

(创建一个注解,javac编译,javap反编译,可以看到如下代码)

public interface Bat extends java.lang.annotation.Annotation {}

  注解本质就是一个继承了Annotation接口的  接口

4. 自定义注解

  • 申明格式:public + @interface + 注解名
public @interface Bat {
}

  • 注解属性:注解本质就是一个接口,所有申请属性的格式,就是在接口中写方法;
public @interface Bat {
    String name();
}
  • 注解的属性返回值类型:

                        基本数据类型;String;枚举;注解类型;上述类型的数组;

  • 注解的默认值:如果注解有属性,在使用时就必须为属性赋值;也可以为属性使用默认值;语法:default ;
public @interface Bat {
    String name() default "baidu";
}
  • 注解的使用:使用注解是,如果注解有属性值,并且没有默认值;就必须为属性赋值;
@Bat(name = "ali")
    private String hobby;

        如果属性名为value,并且只有一个属性时,使用时赋值可以不写属性名

@Bat("ali")
    private String hobby;

5.元注解

  • @Target :标识注解可以在什么地方使用,常用取值如下:
    
public enum ElementType {
    /** 作用于类 */
    TYPE,

    /** 作用于属性 */
    FIELD,

    /** 作用于方法 */
    METHOD,
    /** 参数*/
    PARAMETER,
}
  •   @retention: 标识注解可以保留到什么阶段,取值如下:常用 runtime
public enum RetentionPolicy {
    /**
     * 源码
     */
    SOURCE,

    /**
     * class字节码
     */
    CLASS,

    /**
     *运行时
     */
    RUNTIME
}
  • @Documented: 生成javadoc(api文档是,注解是否显示)
  • @Inherited: 标识父类的注解被子类继承

6. 解析注解 (反射)

        获取使用注解的(对象,方法,属性等。。。)

        


@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface Bat {
    String value() default "baidu";
}


@Bat("baidu")
public class Bussine {
}

public class Test {
    public static void main(String[] args) {
        //获取Class对象
        Class<Bussine> bussineClass = Bussine.class;
        //判断是否有此注解
        boolean present = aClass.isAnnotationPresent(Bat.class);
        //获取注解对象
        Bat annotation = bussineClass.getAnnotation(Bat.class);
        String value = annotation.value();
        System.out.println(value);
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值