来源:blog.csdn.net/u010164936/article/details/8792208百思特网2
在一个类中,为了不让外界访问到某些属性和方法,通常将其设置为private,用正常的方式(对象名.属性名,对象名.方法名)将无法访问此属性与方法,但有没有其他方法可以访问呢?答案是有的,这就是java反射带来的便利。利用反射访问类的私有属性及方法如下:
publicclassreflect{privatestringname;privateintage;privatereflect(intage){this.age=age;}privatevoidspeak(stringname){百思特网system.out.println("mynameis"name);}publicreflect(stringname){this.name=name;}}首先,我们要了解三个反射包中的类:
constructor:代表类的单个构造方法,通过constructor我们可执行一个类的某个构造方法(有参或者无参)来创建对象时。method:代表类中的单个方法,可以用于执行类的某个普通方法,有参或无百思特网参,并可以接收返回值。field:代表类中的单个属性,用于set或get属性accessibleobject:以上三个类的父类,提供了构造方法,普通方法,和属性的访问控制的能力。使用class类中的方法可以获得该类中的所有constructor对象,method对象,和field对象。但是仍然无法访问私有化的构造方法,普通方法,和私有属性,此时我们可以使用他们继承父类(accessibleobject)中的setaccessible()方法,来设置或取消访问检查,以达到访问私有对象的目的。
publicstaticvoidmain(string[]args)throwsexception{reflectreflect=newreflect("a");method[]methods=reflect.class.getmethods();field[]fields=reflect.class.getdeclaredfields();for(inti=0;i本文地址:http:///post/24214.html