A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

Field类:表示某个类中的一个成员变量
   Field类获得的成员变量是属于类类型的变量,它并不是对象的变量,如果要获得具体值,通过Field类变量.get(所属对象) 获得

代码实例:
        package com.reflection.Field;
        import java.lang.reflect.Field;
        public class ReflectionFieldTest {
        public static void main(String args[]){
                /**
                 * 反射获得成员变量,Field 代表某个类中的成员你变量
                 */
                ReflectionPoint rp = new ReflectionPoint(5, 10);
               
               
                Class cls = null;
                try {
                       
                        cls = Class.forName("com.reflection.Field.ReflectionPoint"); //获取ReflectionPoint的Class对象
                        Field fieldx = cls.getField("x");                //获得成员变量x保存在fieldx中
                        int x = (int)fieldx.get(rp);                        //获得成员变量具体值
                        System.out.println(x);
                        //私有成员变量的获取
                        Field fieldy = cls.getDeclaredField("y"); //getDeclaredField可以获取私有的成员变量,不管什么权限的成员变量都可以获取
                        fieldy.setAccessible(true);        //y成员变量是私有,这里设置为true表示可以访问,不设置访问会出现IllegalAccessException
                        int y = (int)fieldy.get(rp);
                        System.out.println(y);
                } catch (ClassNotFoundException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                } catch (NoSuchFieldException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                } catch (SecurityException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                } catch (IllegalArgumentException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                } catch (IllegalAccessException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
             }
        }

        package com.reflection.Field;
        public class ReflectionPoint {
                public int x;
                private int y;
       
                public ReflectionPoint(int x,int y){
                     this.x = x;
                     this.y = y;
                }
        }

1 个回复

倒序浏览
谢谢分享
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马