Java反射的基本使用

反射机制,是Java语言的一个关键性质,它允许我们在程序运行时,获取类的全部(包括private修饰的)成员变量和成员方法,并能动态地改变这些成员变量和成员方法。下面用一个例子来展示它的基本使用吧!

public class ReflectTest {
    private boolean flag;
    private int value = 0;
    ReflectTest(){
        setFlag(false);
    }

    private void setFlag(boolean flag) {
        this.flag = flag;
    }

    public void print(){
        if(flag){
            System.out.println("true");
        }else{
            System.out.println("false");
        }
    }

    public void getValue(){
        System.out.println(value);
    }
}
public class MyClass {

    public static void main(String[] args){


        try {
            ReflectTest reflectTest=new ReflectTest();
            reflectTest.print();
            reflectTest.getValue();

            //反射拿到ReflectTest类中的setFlag(boolean flag)方法
            Method method=reflectTest.getClass().getDeclaredMethod("setFlag", Boolean.TYPE);
            method.setAccessible(true);//取消访问检查
            method.invoke(reflectTest,true);  //传入参数true
            reflectTest.print();
            Field field=reflectTest.getClass().getDeclaredField("value");
            field.setAccessible(true);
            field.set(reflectTest,1);
            reflectTest.getValue();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

通过反射我们就能在外部类中拿到ReflectTest的private方法和变量并修改它们了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值