下一篇是java内省
java反射机制就是把java类按结构进行分解,每一部分对应特定的反射类
java反射机制允许运行时加载、探知和使用一个运行时才得知名称的class,获悉其完整结构信息
Class类的方法:
Class forName(String className)//通过全类名加载该类
Package getPackage()获得此类的包对象
int getModifiers()获得此类的修饰符
String getName()获得此类的名字
Object newInstance()使用无参构造函数创建对象
boolean isArray()判断此类是否是数组
boolean isInstance()判断此类是否是接口
boolean isEnum()判断此类是否是枚举类型
Constructor类的方法:
Constructor getConstructor(Class...parameterType)按照制定的参数获得对应的构造方法,包括父类中符合要求的构造方法
COnstructor[]getConstructors()//获得所有的public构造方法,包括父类的
Constructor getDeclaredConstructor(class...parameterType)//按照参数获得对应的自己声明的构造函数
COnstructor[] getDeclaredConstructors//获得所有的自己声明的构造函数
Object newInstance(Object...initargs)//创建一个对应类的对象
Class getParameterTypes()获得所有参数类型
String getName()获得此构造函数的名称
int getModifiers()获得此构造函数的修饰符
Class[]getExceptionTypes()获得此构造函数声明抛出的异常类
Object getAnnotation(Class annotationClass)获得注释对象
Field类的方法:
Field getField(String name)获得指定的public字段
Field []getFields()获得所有public类型的字段包括父类的
Field getDeclaredField(String name)获得指定的自己声明的字段
Field[] getDeclaredFields()获得所有自己声明的字段,包括private
Class getType()获得字段的类型
Class getDeclaringClass()获得声明此字段的类的类型
String getName()获得此字段的名字
int getModifiers()获得此阻断的修饰符
Object get(Object obj)获得此字段在制定对象中的值
boolean getBoolean(Object obj)获得此字段在制定对象中的boolean值
byte getByte(Object obj)获得此字段在制定对象中的byte值
void set(Object obj,Object value)设置字段在制定对象中的值
void setBoolean(Object obj,boolean z)设置此字段在制定ing对象中的布尔值
Method:
Method getMethod(String name,Class...parameterTypes)按照给定的参数获得对应的public方法
Method []getMethods()获得所有的public方法,包括父类
Method getDeclaredMethod(String name,Class...parameterTypes)按照给定的参数获得对应的自己声明方法
Method getDeclaredMethod()获得所有自己声明的方法
Class getDeclaringClass()获得声明此方法的Class对象
Class []getExceptionTypes()获得此方法声明抛出的异常类型
int getModifiers()获得此方法的修饰符
String getName()获得此方法的名称
Class[]getParameterTypes()获得此方法的参数类型
Class getReturnType()获得此方法的返回值类型
Object invoke(Object obj,Object...args)使用指定对象调用此方法
public class Man {
//获取类对应的Class对象的三种方法
public static void main(String[] args) throws ClassNotFoundException {
Class class1=Man.class;
Man man=new Man();
Class class2=man.getClass();
System.out.println(class2);
System.out.println(class1.forName("reflect.Man"));
}
}
浙公网安备 33010602011771号