- Class的getMethod的查找方法时,除了查找本类以外,还查找父类,一直往上查找到Object。
- 而getDeclaredMethod只查找本类本身。
代码示例:
定义一个Product类:
package com.thb;
public class Product {
public static void staticSayHello() {
System.out.println("在Product的静态函数staticSayHello中");
}
public void sayHello() {
System.out.println("在Product的非静态函数sayHello中");
}
}
- 调用验证一:
在下面的调用中,用getMethod在Product 类中查找toString方法。Product 类本身没有定义toString方法,而Object定义了,所以查找到了:
package com.thb;
import java.lang.reflect.Method;
public class Demo6 {
public static void main(String[] args) throws NoSuchMethodException, SecurityException {
Method method = Product.class.getMethod("toString");
if (method != null) {
System.out.println(method.getName());
}
}
}
运行输出:
- 调用验证二
在下面的调用中,用getDeclaredMethod在Product 类中查找toString方法。Product 类本身没有定义toString方法,所以没有找到,抛出了异常:
package com.thb;
import java.lang.reflect.Method;
public class Demo6 {
public static void main(String[] args) throws NoSuchMethodException, SecurityException {
Method method = Product.class.getDeclaredMethod("toString");
if (method != null) {
System.out.println(method.getName());
}
}
}
运行输出: