class Boss{
public int age;
private static String name;
public Boss(){}
public static String Say(int n,String s,char c){ //静态方法
return n + " " + s + " " + c;
}
public void hi(String s){ //普通public方法
System.out.println("hi" + s);
}
}
当使用反射方法调取Boss类中的普通public方法hi时,常规调用
public class ReflecAccessMethod {
public static void main(String[] args) throws Exception {
//1.得到Boss类的Class对象
Class<?> bossClass = Class.forName("Reflection.question.Boss");
//2.创建对象
Object o = bossClass.newInstance();
//3.调用public的hi方法
Method hi = bossClass.getMethod("hi");
System.out.println(hi);
// Method hi1 = bossClass.getDeclaredMethod("hi");
}
}
但此时报错
这是因为在hi方法中,包含一个String类型的形参在内,但在使用getMethod调用时未处理String类型的形参,所以认定没有(找不到)该方法,所以此时也应 提供或获得 hi方法中String类型形参 的类型信息,所以getMethod方法修改为:
Method hi = bossClass.getMethod("hi",String.class);
即可正常运行
(注:其他基本数据类型同理)
运行结果为: