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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

import java.lang.reflect.Field;


public class Filed类 {

        public static void main(String[] args)  {
                A one=new A(1,2);
                Field f1=null;
                Field f2=null;
                                try {
                        A:                f1=one.getClass().getField("a");//1.通过A类的字节码获取其指定的Filed的实例.
                                                                       //2.注意此处得到的成员变量为类的成员变量,f输出为null
                                                                       //3.此getField方法只能获取公共的成员变量 否则抛出NoSuchFieldException
                    f2=one.getClass().getDeclaredField("a");//此getDeclaredField方法可以获得任何权限的成员变量
                                        try {
                                            f2.setAccessible(true);//当成员变量为私有是,通过此方法亦可访问。此即为暴力反射
                                                System.out.println(f2.get(one));//此get方法默认条件下只能访问非私有的成员变量否则抛出IllegalAccessException
                                        } catch (IllegalArgumentException e) {
                                                System.out.println("非法参数");
                                        } catch (IllegalAccessException e) {
                                                System.out.println("非法访问异常");
                                        }      
                                } catch (SecurityException e) {
                                        System.out.println("安全异常");  
                                } catch (NoSuchFieldException e) {
                                System.out.println("没有此成员变量");
                                }



        }
}
class A{
        private int a;
        public  int b;
        public A(int a, int b) {
                super();
                this.a = a;
                this.b = b;
        }

}

1 个回复

倒序浏览
此程序输A处出出异常输出没有此成员变量 就完事了 怎么不继续向下执行?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马