使用反射的形式来实例化对象,并实现对属性的复制和方法的调用
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class Reflect {
public static void main(String[] args) throws NoSuchMethodException, NoSuchFieldException, IllegalAccessException, InvocationTargetException, InstantiationException {
//构造方法对象
Class<Employee> employeeClass = Employee.class;
//获取构造方法
Constructor<Employee> declaredConstructor = employeeClass.getDeclaredConstructor();
//构建对象
Object emp = declaredConstructor.newInstance();
//获取属性
Field account = employeeClass.getField("account");
Field password = employeeClass.getField("password");
//属性赋值
account.set(emp,"admin");
password.set(emp,"admin");
//获取登录方法
Method login = employeeClass.getMethod("login");
//调用登录方法
Object res = login.invoke(emp);
//打印结果
System.out.println(res);
}
}
class Employee{
public String account;
public String password;
public boolean login(){
return account.equals("admin") && password.equals("admin");
}
}