Target
taget里面就一个属性,叫做value
它的类型是ElementType[]这个类型的 它其实就是一个枚举类型 所以我们就可以这么去使用 我们作用在MyAnno3这个类上 作用在方法上可以吗?在方法上加上就会报错,。 成员变量上也不能加 value值是一个数组,加上作用域Method方法上。 再加一个作用字段上。这样既可以作用方法、类、成员变量上这三种都可以。Retention
源码中对应的类型
RetentionPlicy也是一个枚举类型。分别对应的是源码阶段、class阶段、runtime阶段 一般都是加Runtime这个级别的注解 如果设置Class级别。也会保留到字节码中。但是不会被JVM识别 如果设置为Source。连字节码文件中都不会存在Documented
将来这个注解描述的这些信息会被抽获取到javadoc的文档中。
桌面上新建文件夹2 然后把Worker.java这个类复制过来。 删除相关代码后。 MyAnno3也复制过来 内容全剪切掉 修改文件的格式 然后把内容再粘贴回来。并保存这个文件。 worker这个类同上,先剪切,再修改格式为 ANSI格式编码。然后再粘贴回来。 右键打开命令行 在这个文件夹内生成api文档 生成后查看,注解被保留了 show方法上面的注解也被保留了 name上的注解没有被保留 所说义这个@Documented 可以被抽获取到javadoc文档中的 如果下面这里把 @Documented 这个注解删掉。、 删掉后,重新生成API文档 那么在Worker类里面加的这个几个注解会不会在API中体现? 删掉后,就不会体现了。、虽然加了注解的描述的。但是因为去掉了@Documented这段代码。所以不会在文档中体现@Inherited
表示这个注解是否会被继承
表示这个注解会自动被此类继承 新建一个Teacher类 Teacher继承Worker这个类。在Teacher类没有加注解。 但是worker这个类有注解。那么Teacher会继承类上面的 @MyAnno3的这个注解。总结
比较常用的注解就是前两个