爆破_反射访问类中的成员

该代码示例展示了如何使用Java的反射API来访问和修改类的私有属性。通过`Class.forName`加载类,然后利用`getDeclaredConstructor`创建对象,`getDeclaredField`获取私有字段,并通过`setAccessible(true)`绕过访问限制。此外,还演示了对静态属性的修改,即使不需对象实例也能操作。
摘要由CSDN通过智能技术生成

Class:

public class A {
    public int a1 = 1;
    private int a2 = 2;
    public start String s;
}

获取成员 包括私有属性 : 

public class Main {
    public static void main(String[] args) throws Exception {
        Class class_ = Class.forName("fanshe_chaozhuo.A");
        Object o = class_.getDeclaredConstructor().newInstance();

        // 获取某属性
        Field field = class_.getDeclaredField("a1");
        // 获取值
        System.out.println(field.get(o));

        Field field1 = class_.getDeclaredField("a2");
        // a2为provate 开始暴力破解
        field1.setAccessible(true);
        System.out.println(field1.get(o));
        // 并且可以修改值
        field1.set(o,9999);
        System.out.println(field1.get(o));
    }
}

运行结果

细节:

修改静态属性时,对象名是可以省略的
class .....
public start String s;
......

Field field2 = class_.getDeclaredField("s");
field2.set(null,"sdas");
System.out.println(o);

运行结果

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值