@Documented @Retention(RetentionPolicy.RUNTIME) @Target(value={CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, PARAMETER, TYPE}) public @interface Deprecated { }
@Target(ElementType.METHOD) @Retention(RetentionPolicy.SOURCE) public @interface Override { }
@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE}) @Retention(RetentionPolicy.SOURCE) public @interface SuppressWarnings {
是呀 看法一致, @Deprecated是运行时
/** * Annotations are to be discarded by the compiler. * 编译完成就被丢弃了。编译完成的java 变成.class */ SOURCE, /** * Annotations are to be recorded in the class file by the compiler * but need not be retained by the VM at run time. This is the default * behavior. * 编译完成之后记录在class 文件当中 在运行时不保留在jvm 中。也就是程序运行的时候找不到他。 */ CLASS, /** * Annotations are to be recorded in the class file by the compiler and * retained by the VM at run time, so they may be read reflectively. * 记录在class 文件当中,程序运行时你还可以用 * @see java.lang.reflect.AnnotatedElement */ RUNTIME