public class Java8Test {
public static void main(String[] args) {
Class<B> b = B.class;
Method[] methods = b.getMethods();
for (Method method : methods) {
Annotation resource = method.getAnnotation(Resource.class);
if (resource != null) {
System.out.println(method);
}
}
}
}
class A<T extends Object> {
void print(T t) {
}
}
class B extends A<String> {
@Resource
public void print(String s) {
}
}
在Java8中输出结果是:
public void com.test.java8.B.print(java.lang.String)
public void com.test.java8.B.print(java.lang.Object)
在Java6和Java7中输出结果是
public void com.test.java8.B.print(java.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升级都是兼容的。