java反射入门小练习

不适用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;
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值