java的注解解析原理_Java注解使用及原理解析

基本特性

1、jdk 1.5之后才引入的。

2、用来说明程序的。(注释是给程序员看的,注解就是给电脑看的)

java注解的作用分类

1、编写文档:通过代码标识的注解生成文档。【生成doc文档】

2、代码分析:通过代码标识的注解对代码进行分析。【使用反射】

3、编译检查:通过代码标识的注解让编译器能够实现基本的编译检查。【override】

测试类:

/**

* 我的javadoc测试

*/

public class TestCode {

/**

* 计算两个数的和

* @param a 整数a

* @param b 整数b

* @return 返回两个数的和

*/

public int add(int a, int b){

return a+b;

}

}

对于2、3两点我们应该是知道的。尽管可能不知道里面的原理。但是是平时都在用的。但是对于1点还可以生成doc文档?

测试操作如下:

D:softjdkbinjavadoc.exe .TestCode.java -encoding utf-8 -docEncoding utf-8 -charset utf-8

生成了一大堆的东西:

60d10168738b33582a1b6876f1c13019.png

打开TestCode.html可以发现,我们的java api手册就是这样生产的。

注解来源分类

1、jdk自带的注解,如常见的override(重写校验),deprecated(表示弃用)

2、自定义的注解

1)格式, 以override为例:

b008b83638b0f759cad4cc15aa04e675.png

2)注解的本质

我们编写一个简单的注解

MyAnnotation.java

public @interface MyAnnotation {}

我们通过编译和反编译看下最终是什么样的结果:

D:softjdkbinjavac.exe MyAnnotation.java

D:softjdkbinjavap.exe MyAnnotation.class

结果如下:

public interface MyAnnotation extends java.lang.annotation.Annotation {

}

可以发现注解的本质就是接口,这个接口继承了jdk里面的Annotation接口。

3)注解的属性

由于注解本质为接口,那么里面可以定义未实现的方法。这些称为注解的“属性”。

属性的返回类型有(返回值不能为void):

基本数据类型

String

枚举

注解

以及以上四种类型的数组

例子:

public enum Person {

PS;

}

public @interface Annotation2 {

}

public @interface MyAnnotation {

String stringValue();

int integerValue();

Person personValue();

Annotation2 myAnnotationValue();

String[] stringArrayValue();

}

属性的使用,需要注意几点:

定义了属性在使用的时候就要给属性赋值,除非设置default值。如:String stringValue() default "aaa";

如果属性为value且属性只有这一个,那么value可以省略,直接填写属性值。

如果是数组,需要用{}包含起来。

public @interface MyAnnotation {

String stringValue() default "xxx";

int integerValue();

String[] stringArrayValue();

}

public @interface Annotation2 {

String value();

}

@MyAnnotation(integerValue = 1, stringArrayValue = {"aaa", "bbb"})

@Annotation2("default")

public class TestCode {

/**

* 计算两个数的和

* @param a 整数a

* @param b 整数b

* @return 返回两个数的和

*/

public int add(int a, int b){

return a+b;

}

@Override

public String toString() {

return super.toString();

}

}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值