不适用new创建对象。基于反射实现一个用户登录的小功能。
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class reflect_test
{
public static void main(String[] args) throws NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException, NoSuchFieldException {
//todo 反射练习 实现用户登录功能
// 获取User类的Class对象
Class<User> userClass = User.class;
// 获取User类的无参构造方法
Constructor<User> declaredConstructor = userClass.getDeclaredConstructor();
// 使用无参构造方法创建User类的实例
User user1 = declaredConstructor.newInstance();
User user2 = declaredConstructor.newInstance();
// 获取User类中的account字段
Field account = userClass.getField("account");
// 获取User类中的password字段
Field password = userClass.getField("password");
// 设置user对象的account字段值为"admin"
account.set(user1,"admin");
account.set(user2,"...");
// 设置user对象的password字段值为"admin"
password.set(user1,"admin");
password.set(user2,"xxx");
// 获取User类中的login方法
Method login = userClass.getMethod("login");
// 调用user对象的login方法,并获取返回值
Object result1 = login.invoke(user1);
Object result2 = login.invoke(user2);
// 打印login方法的返回值
System.out.println("用户1登录结果:"+result1);
System.out.println("用户2登录结果:"+result2);
}
}
class User{
// 用户账号
public String account;
// 用户密码
public String password;
// 登录方法,判断账号和密码是否为"admin"
public boolean login(){
if("admin".equals(account)&&"admin".equals(password)){
return true;
}else {
return false;
}
}
}