Joh*_*nGa 24 java reflection annotations
来自Java doc:
CLASS:注释将由编译器记录在类文件中,但在运行时不需要由VM保留.
RUNTIME:注释将由编译器记录在类文件中,并在运行时由VM保留,因此可以反射性地读取它们.
SOURCE:编译器将丢弃注释.
我理解RUNTIME的用法(为了使用带有反射的注释)和CLASS(用于编译器),但我不明白何时使用它是有用的
@Retention(RetentionPolicy.SOURCE)
你可以解释吗?
gka*_*mal 19
像@SuppressWarnings,@ Override这样的东西是编译器使用的注释 - 在运行时不需要.对于那些RetentionPolicy.SOURCE会有意义.注释也可用于生成代码(查看Spring ROO) - 在运行时也不需要这样的注释.