Java反射机制
Class c1 = Class.forname("User");
//获得类的名字
c1.getName();
c1.getSimpleName();//不含包名;
//获得类的属性
getField() 只能获得public属性
getDeclaredFields() 找到全部的属性
Field[] fields = c1.getDeclaredFields();
for(Field field : fields){
System.out.println(field);
}
//获得指定属性的值
Field name = c1.getDeclaredField("name");//name 为User 的一个属性
//获得类的方法
c1.getMethods();//获得本类和父类的全部方法
c1.getDeclaredMethods();//只获得本类
//获得指定方法
c1.getMethod()
//获得指定构造器
c1.getConstructors()
通过反射动态创建对象
Constructor constructor = c1.getDeclaredConstructor(String.class, int.class, int.class);
User user = (User)constructor.newInstance("sss", 001,11);
通过反射获取方法
User user = (User)c1.newInstance();
Method setName = c1.getDeclaredMethod("setName", String.class);
setName.invoke(user, "kuang");
通过反射操作属性
User user = (User)c1.newInstance();
Field name = c1.getDeclaredField("name");
name.setAccessible(true);//不能直接操作私有属性,需要这一步来关闭程序的安全监测
name.set(user,"sss");
user.getName();
浙公网安备 33010602011771号