反射获取类的成员变量和protected方法

public class PrivateCar {
// private 成员变量 使用传统的调用方式只能在本类中调用
private String color;
//protected方法 使用传统的调用方式只能在子类和本包中访问
protected void drive() {
System.out.println(“哈哈哈哈哈的颜色为”+color);
}
}

public class PrivateCarReflect {
public static void main(String[] args) throws Exception {
// 通过类加载器==>类的构造函数反射类
ClassLoader cons = Thread.currentThread().getContextClassLoader();
Class clazz = cons.loadClass(“com.smart.admin.PrivateCar”);
// 获取类的默认构造器,并通过他实例User
PrivateCar pcar = (PrivateCar) clazz.newInstance();// 相当于new PrivateCar
Field colorFed = clazz.getDeclaredField(“color”);
// 取消jav语言检查以访问private 变量
colorFed.setAccessible(true);
colorFed.set(pcar, “红色”);
// 通过反射方法获取属性
Method drivateMtd = clazz.getDeclaredMethod(“drive”, (Class[]) null);
drivateMtd.setAccessible(true);
// 运行
drivateMtd.invoke(pcar, (Object[]) null);
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值