无参构造器 + 方法的调用
bash
复制代码
package com.studio;
import java.lang.reflect.Method;
class User {
private String name;
/*无参构造器*/
public User() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "User [name=" + name + "]";
}
}
public class ReflectTest {
public static void main(String[] args) throws Exception {
// 加载类字节码
Class<?> clazz = ReflectTest.class.getClassLoader().loadClass("com.studio.User");
// 使用默认构造器创建对象
Object instance = clazz.getConstructor().newInstance();
// 获取方法(方法名+参数类型)
Class<?> paramTypes[] = new Class[1];
paramTypes[0] = Class.forName("java.lang.String");
Method method = instance.getClass().getMethod("setName", paramTypes);
// 调用方法(this+参数)
Object paramValues[] = new Object[1];
paramValues[0] = "小明";
method.invoke(instance, paramValues);
System.out.println(instance);
}
}