class
class M{
public void a(){
System.out.println("public");
}
private void a2(){
System.out.println("private");
}
private void a2(int i){
System.out.println("private "+i);
}
}
调用
public class Main {
public static void main(String[] args) throws Exception{
Class class_ = Class.forName("fanshe_chaozhuo.method_.M");
Object o = class_.getDeclaredConstructor().newInstance();
Method method = class_.getDeclaredMethod("a");
method.invoke(o);
// a2有重写 区分调用的方法
// 有参 a2
Method method1 = class_.getDeclaredMethod("a2",int.class);
// 无参 a2
Method method2 = class_.getDeclaredMethod("a2");
// 暴力破解
method1.setAccessible(true);
method2.setAccessible(true);
// 有参就要传参
method1.invoke(o,100);
// 无参直接调用
method2.invoke(o);
}
}
运行结果

返回值:
public static String a3(){
return "返回字符串";
}
返回的运行类型是字符串,编译类型是Objcet
// 返回值 start方法可以为null
Object o1 = (class_.getDeclaredMethod("a3")).invoke(null);
System.out.println(o1.getClass());
System.out.println((String) o1);
运行结果
