RetentionPolicy.CLASS
和 RetentionPolicy.RUNTIME
的实际区别是什么?
看起来两者都记录在字节码中,并且无论如何都可以在运行时访问。
最佳答案
both may be accessed at the run-time anyway.
那不是 javadoc说:
RUNTIME:注解将由编译器记录在类文件中,并在运行时由 VM 保留,因此可以反射性地读取它们。
CLASS:注释将由编译器记录在类文件中,但VM在运行时不需要保留。
实际上,我不知道 CLASS
的任何用例。仅当您想以编程方式读取字节码时才有用,而不是通过类加载器 API,但这是一个非常特殊的情况,我不知道您为什么不只使用 RUNTIME
.
具有讽刺意味的是,CLASS
是默认行为。
关于java - RetentionPolicy CLASS 与 RUNTIME,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5971234/