我发现Java 8与Method.getAnnotation(Class<T> annotationClass)
上的Java 7不同,例如代码:
public class Java8Test extends A<String> {
public static void main(String[] args) {
Class<Java8Test> b = Java8Test.class;
Method[] methods = b.getDeclaredMethods();
for (Method method : methods) {
Annotation annotation = method.getAnnotation(Resource.class);
if (annotation != null) {
System.out.println(method);
}
}
}
@Resource
public void print(String s) {
System.out.println(s);
}
}
class A<T extends Object> {
void print(T t) {
}
}
使用Java 8打印:
public void com.test.java8.Java8Test.print(java.lang.Object)
public void com.test.java8.Java8Test.print(java.lang.String)
使用Java 6或Java 7打印:
public void com.test.java8.Java8Test.print(java.lang.String)
我是如何得到真正的方法的。