1.类加载器把A.class加载到内存里生成字节码,这时候A上的注解肯定不会被丢弃的. 因为注解B保留到运行时期. 保留策略有三种: 源文件,编译的.class,和运行时期. 如果被丢弃的话,反射就没法获得注解信息了. 只有源文件级别的 会在编译的时候丢弃.
2.If语句判断的时候,肯定是判断上面是否有注解,而不是判断上面是否有b.class.就目前我接触到的java知识来看,还没有看到过哪个字节码上再加一个字节码的.如果真是这样,我用Class.forName(A.class)岂不是应该返回一个Class数组了.这一点只是猜测. |