1、不带参数的情况
首先得到该类的Class对象,再调用newInstance方法即可得到空参数列表的实例
public static void main(String[] args) throws Exception {
Class c = Class.forName("com.nosuchmethod.Person"); //包名为com.nosuchmethod
Method m = c.getMethod("test"); //Person有一个方法为test
m.invoke(c.newInstance()); //调用test方法
}
输出结果为:
2、带参数传递的情况
public static void main(String[] args) throws Exception {
Class clazz = Class.forName("com.nosuchmethod.Person");
Method[] methods = clazz.getMethods();
methods = clazz.getDeclaredMethods();
Person p = (Person) clazz.newInstance();
Method method = clazz.getMethod("test", TestEnt.class);
TestEnt testEnt = new TestEnt();
testEnt.setName("KingHao");
TestEnt a = (TestEnt) method.invoke(p, testEnt);
System.out.println(a.getName());
}
输出结果为:
Person 类:
import com.cloud.TestEnt;
public class Person {
public String test(String obj) {
System.out.println(obj);
return obj;
}
public TestEnt test(TestEnt obj) {
System.out.println("这是带参数的方法");
return obj;
}
public void test() {
System.out.println("这是不带参数的方法");
}
}
TestEnt类:
package com.cloud;
import lombok.Data;
/**
* @author kinghao
* @version 1.0
* @className TestEnt
* @description
* @date 2020/6/9 18:51
* @description
*/
@Data
public class TestEnt {
private String name;
}
参考文章:https://blog.csdn.net/u010729348/article/details/16819693