|
一、Class 类 :注意和关键字 class 不是一回事。
Class:java.lang包下的;没有公开的构造方法;不允许直接创建对象;只能通过具体类获得;用来描述其他的一个类型 获得一个Class对象的方式: Class c1 = Class.forName("test.OuterA"); Class 类的方法介绍: 1.int getModifiers() ;//得到此类的修饰符的int值; String modifier = Modifier.toString(c1.getModifiers()); 2.
Class[] getInterfaces()
//如果此对象表示一个类,则返回值是一个数组,它包含了表示该类所实现的所有接口的对象。数组中接口对象顺序与此对象所表示的类的声明的
implements 子句中接口名顺序一致。 例如 类 ExFrame 如下: public class ExFrame extends JFrame implements ActionListener,Serializable{ 在main方法里: Class cc = ExFrame.class; 结果如下: interface java.awt.event.ActionListener 3. Field[] getDeclaredFields();//得到所有属性; Field[] fields = cc.getDeclaredFields(); 结果如下: public int test.ExFrame.intAtt 5. Method getDeclaredMethod(String name, Class... parameterTypes)
6. Class<?>[] getParameterTypes() 得到参数表; 二、反射机制的理解 反射的真正目的是让 JVM动态加载类,并且来调用方法和修改属性; 三、属性:类Field
Field 类封装了一个类的属性的所有描述 包括 修饰符、属性类型、属性值、属性的注释,提供了一系列 get/set 方法来获得修改属性的值 类 Class 中有个方法:Field getField(String name) ; 可以得到 Field Field 中常用的方法:
四、方法: 类Method
Method 类封装了一个类的所有方法的描述 包括 修饰符、返回类型、方法名、参数列表、注释、异常信息,还提供了 invoke 方法 来调用自己 Method 有一个invoke方法: Object invoke(Object obj, Object... args)
五、构造方法 : 类 Constructor<T>
Constructor 提供关于类的单个构造方法的信息以及对它的访问权限。 对于无参构造方法,直接调用 Class 类的 newInstance() 方法就可以构造一个对象。 对于有参数的构造方法,先点用 Class 类的 getConstructors() ,利用返回的 Constructor 的对象 调用 newInstance(Object obj1,...);例如 public class ExFrame extends JFrame implements ActionListener,Serializable{ Constructor [] cons = cc.getConstructors();
六、通过反射可以访问对象的私有属性吗?
访问权限对java虚拟机都是无效的,对于私有属性而言,反射是可以访问到的; 同样对私有成员方法有效:m.setAccessible(true);
|
588

被折叠的 条评论
为什么被折叠?



