一、反射:通过Java 反射机制,可以在程序中访问已经装载到JVM中的Java 对象的描述,实现访问、检测和修改描述Java 对象本身信息的功能。Java 反射机制的功能十分强大,在java.langreflect 包中提供了对该功能的支持。
JTextField textField = new JTextField(); //创建JTextField对象 Class textFieldC =textField.getClass(); //获取Class 对象
1.访问构造方法:在通过下列一组方法访问构造方法时,将返回Constructor类型的对象或数组。每个Constructor象代表一个构造方法,利用Constructor对象可以操纵相应的构造方法
getConstructors()。
getConstructor(Class<?>...parameterTypes)。
getDeclaredConstructors()。
getDeclaredConstructor(Class<?>...parameterTypes)。
2.访问成员变量:在通过下列一组方法访问成员变量时,将返回 Field 类型的对象或数组。每个Field 对象代表成员变量,利用 Field对象可以操纵相应的成员变量:
getFields0)。
getField(String name)。
getDeclaredFields)。
getDeclaredField(String name)。
3.访问成员方法
在通过下列一组方法访问成员方法时,将返回Method类型的对象或数组。每个Method对象代一个方法,利用Method 对象可以操纵相应的方法:
getMethods0。
getMethod(String name, Class<?>...parameterTypes)。
getDeclaredMethods0)。 KgetDeclaredMethod(String name, Class<?>...parameterTypes)。
二、Annotation注解功能
1.定义Annotation 类型:在定义 Annotation 类型时,也需要用到用来定义接口的 interface 关键字,但需要在 iterface 关键字前加一个“@”符号,即定义 Amotation 类型的关键字为inerace,这个关字的隐意思是继承ava.langannotation.Annotation 接口。
public @interface NoMemberAnnotation { }
public @interface OneMemberAnnotation { String value(); }
2.访问Annotation 信息:如果在定义Annotation 类型时将@Retention 设置为 RetentionPolicyRUNTIME,那么在运行程序时通过反射就可以获取到相关的Annotation 信息,如获取构造方法、字段和方法的Annotation 信息。
课堂代码: