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);
}
}
反射获取类的成员变量和protected方法
最新推荐文章于 2021-03-01 23:55:56 发布