(java) Java8中使用泛型通过反射获得注解的BUG如何解决?

public class Java8Test { public static void mainString[] args { Class<B> b = B.class; Method[] methods = b.getMethods; for Method method : methods { Annotation resource = method.getAnnotationResource.class; if resource != null { System.out.printlnmethod; } } }
} class A<T extends Object> { void printT t { }
} class B extends A<String> { @Resource public void printString s { }
}

在Java8中输出结果是:
public void com.test.java8.B.printjava.lang.String
public void com.test.java8.B.printjava.lang.Object

在Java6和Java7中输出结果是
public void com.test.java8.B.printjava.lang.String

Java每次升级都不兼容,真是无语了。

真是坑死爹了。http://www.oracle.com/technetwork/java/javase/8-compatibility-guide-2156366.html
一句话:parameter and method annotations are copied to synthetic bridge methods。
我还以为Java升级都是兼容的。

发表评论

电子邮件地址不会被公开。 必填项已用*标注