反射系列之属性方法(调用私有方法,获得属性值)
2018-03-30 17:53
621 查看
import java.lang.reflect.Field; import java.lang.reflect.Method; class Preson { private String name = "liuqiang"; private int age = 23; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } private int display(String info,int id){ System.out.println("打印信息:"+info); return id; } @Override public String toString() { return this.name + "-->" + this.age; } } public class ReflectDemo { public static void main(String[] args) { test(Preson.class); } public static <T> void test(Class<T> cls) { try { Object obj = Class.forName(cls.getName()).newInstance();//1.通过类名创建新实例 Class classBean = obj.getClass(); //2.获取该新实例的类 Field[] fields = classBean.getDeclaredFields(); //3.取得该类的所有成员变量 //反射属性 for (Field field : fields) { field.setAccessible(true);//4.取消对每个属性的安全检查(说白了,也就是允许私有变量) System.out.println("属性类型:" + field.getType() + "\t属性名:" + field.getName() + "\t属性值:" + field.get(obj)); } //反射方法 Method[] methods = classBean.getMethods(); for (Method m : methods) { System.out.println(m.getName()); } //调用私有方法 参数一:指定调用的方法名 参数二:指定方法后面的参数类型 Method displayMethod = classBean.getDeclaredMethod("display", String.class, int.class); displayMethod.setAccessible(true);//取消对此私有的方法的安全检查 Object liuqiang = displayMethod.invoke(obj, "liuqiang", 23);//调用 System.out.println(liuqiang); } catch (Exception e) { e.printStackTrace(); } } }
相关文章推荐
- 利用反射对私有属性/方法进行设置/调用
- 利用java的反射机制调用类的私有方法及私有属性
- Java记录 -88- 利用反射机制调用对象的私有方法和属性
- java 通过反射获得类的属性和调用方法
- 使用反射调用私有属性和方法
- 转:用反射调用对象的私有属性和方法(经典)
- 通过反射创建私有化类的对象,调用类的私有方法,改变私有属性
- java 反射调用 私有构造类中 private static final 属性的方法
- 利用反射调用私有方法、访问私有属性
- Java通过反射调用其他类的私有属性和私有方法
- 利用反射访问私有属性、调用私有方法
- Java反射学习总结二(用反射调用对象的私有属性和方法)
- Java记录 -88- 利用反射机制调用对象的私有方法和属性
- 关于java的反射,调用私有方法(有参数私有方法),私有属性
- 利用反射对私有属性/方法进行设置/调用(转自己贴)
- java反射调用私有方法和修改私有属性
- Java反射学习总结二(用反射调用对象的私有属性和方法)
- Java反射之访问私有属性或方法
- JavaSE第六十四讲:使用反射机制调用对象的私有方法、访问对象的私有成员变量
- java 反射获得私有属性的对象