一、retentionpolicy.class vs runtime区别
java5,增加了注解的功能;其中retentionpolicy注解的生命周期,提供了三种选择策略 source、class和runtime三种选择;
source:源码级别的,主要是方便程序上查看;它的生命周期是编译后,就消亡了,不会存留在classs文件中
class:编译级别的,字节码文件中会留存。生命周期在类加载到虚拟机的时候,消亡;所以它不会加载到java虚拟机中。不过他可以通过aspectj、becl(asm)等字节码库去使用,从而达到修改字节码的效果
runtime:运行时级别;可以被加载到虚拟机中,因此可以通过java反射获取到
参考:
1、https://stackoverflow.com/questions/5971234/retentionpolicy-class-vs-runtime
2、关于becl的用法:https://blog.csdn.net/garfielder007/article/details/56319242
二、String.intern()方法
intern 逻辑判断:当调用 intern 方法时,如果常量池已经包含一个等于此 String 对象的字符串(该对象由 equals(Object) 方法确定),则返回池中的字符串。否则,将此 String 对象添加到池中,并且返回此 String 对象的引用
参考1中,有段文字,是这样写的
Invoking intern method on a string object, either crea