通过反射的方式拿到,符合JavaBean标准的类(拥有一系类gets和sets方法)中的私有字段,有两种方式,一种为暴力反射,一种是使用,Java api对JavaBean操作的支持
通过代码,描述一下,现在有一个了目标类,获得他的私有字段x- package com.itheima;
- public class Target {
- private int x;
- public int getX() {
- return x;
- }
- public void setX(int x) {
- this.x = x;
- }
- }
复制代码 测试:- public static void main(String[] args) throws Exception {
- Target t = new Target();
- t.setX(5);
- //通过暴力反射方式
- Field f = Target.class.getDeclaredField("x");
- f.setAccessible(true);
- f.get(t);
- System.out.println(f.get(t));
- //通过JavaBean
- PropertyDescriptor pd = new PropertyDescriptor("x", Target.class);
- Method method = pd.getReadMethod();
- System.out.println(method.invoke(t, null));
- }
复制代码 结果成功获得了x的值(都打印了5),通常我们都使用符合JavaBean标准这种,因为使用暴力反射会破坏程序的封装性,像一些框架ssh只有很少数的情况下,才会使用暴力反射,比如Hibernate只有注解写在私有字段上时才会使用这种方式。
楼主不要纠结于用那种,能达到目的就行了
|