在Java编译器编译时,它会识别在源代码里添加的注解是否还会保留,这就是RetentionPolicy。下面是Java定义的RetentionPolicy枚举:
编译器的处理有三种策略:
将注解保留在编译后的类文件中,并在第一次加载类时读取它;
将注解保留在编译后的类文件中,但是在运行时忽略它;
按照规定使用注解,但是并不将它保留到编译后的类文件中。
?
12345678910 Java代码 packagejava.lang.annotation; publicenumRetentionPolicy{ SOURCE, //此类型会被编译器丢弃 CLASS, //此类型注解会保留在class文件中,但JVM会忽略它 RUNTIME //此类型注解会保留在class文件中,JVM会读取它 }
?
1234567891011 Java代码 //让保持性策略为运行时态,即将注解编码到class文件中,让虚拟机读取 @Retention(RetentionPolicy.RUNTIME) public@interfaceGreeting{ //使用枚举类型 publicenumFontColor{ BLUE,RED,GREEN }; Stringname(); FontColorfontColor()defaultFontColor.RED; }
|
|