标签:util inter modifier parameter field invoke super 类型 etc
反射
1.在运行期间,动态获取某个类的详细信息
2.在运行期间,动态创建任意类型的对象
3.在运行期间,动态的为对象赋值
4.在运行期间,动态的调用对象的任意方法
1.在运行期间,动态获取某个类的详细信息
步骤:
1.获取某个对象的Class对象
2.使用Class对象和java.lang.reflect包下面的其他类型的API
Class中的API:
1.包:package getPackage()
2.类的修饰符:int getModifiers()
3.类名:getName()
4.父类:getSuperclass()
5.接口:getInterfaces()
6.属性:Field[] getFields():该类及其所有超类的公共字段
Field[] getFields(String name)
Field[] getDeclaredFields() 该类的字段
Field[] getDeclaredFields(String name)
7.构造器:Construct<?> getConstructors()
Construct<?> getConstructors(Class<?> ... parameterTypes)
Construct<?> getDeclaredConstructors()
Construct<?> getDeclaredConstructors(Class<?> ... parameterTypes)
8.方法:Method[] getMethods()
Method[] getMethods(String name,Class<?> ... parameterTypes)
Method[] getDeclaredMethods()
Method[] getDeclaredMethods(String name,Class<?> ... parameterTypes)
java.lang.reflect包
(1)package类型
包名:getName()
(2)Modifier类型
(3)Field类型
【修饰符】 数据类型 属性名
set/get值
属性名:getName()
属性修饰符:getModifiers()
属性类型:getType()
(4)Constructor类型
【修饰符】 构造器名(形参列表){}
构造器名:getName()
构造器修饰符:getModifiers()
构造器形参列表:getParameterTypes()
(5)Method类型
【修饰符】返回值类型 方法名 (【形参列表】) throws 异常列表{}
被调用invoke
方法名:getName()
方法修饰符:getModifiers()
方法形参列表:getParameterTypes()
方法返回值类型:getReturnType()
package test04; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.lang.reflect.Modifier; import org.junit.Test; /* 反射 1.在运行期间,动态获取某个类的详细信息 2.在运行期间,动态创建任意类型的对象 3.在运行期间,动态的为对象赋值 4.在运行期间,动态的调用对象的任意方法 1.在运行期间,动态获取某个类的详细信息 步骤: 1.获取某个对象的Class对象 2.使用Class对象和java.lang.reflect包下面的其他类型的API Class中的API: 1.包:package getPackage() 2.类的修饰符:int getModifiers() 3.类名:getName() 4.父类:getSuperclass() 5.接口:getInterfaces() 6.属性:Field[] getFields():该类及其所有超类的公共字段 Field[] getFields(String name) Field[] getDeclaredFields() 该类的字段 Field[] getDeclaredFields(String name) 7.构造器:Construct<?> getConstructors() Construct<?> getConstructors(Class<?> ... parameterTypes) Construct<?> getDeclaredConstructors() Construct<?> getDeclaredConstructors(Class<?> ... parameterTypes) 8.方法:Method[] getMethods() Method[] getMethods(String name,Class<?> ... parameterTypes) Method[] getDeclaredMethods() Method[] getDeclaredMethods(String name,Class<?> ... parameterTypes) java.lang.reflect包 (1)package类型 包名:getName() (2)Modifier类型 (3)Field类型 【修饰符】 数据类型 属性名 set/get值 属性名:getName() 属性修饰符:getModifiers() 属性类型:getType() (4)Constructor类型 【修饰符】 构造器名(形参列表){} 构造器名:getName() 构造器修饰符:getModifiers() 构造器形参列表:getParameterTypes() (5)Method类型 【修饰符】返回值类型 方法名 (【形参列表】) throws 异常列表{} 被调用invoke 方法名:getName() 方法修饰符:getModifiers() 方法形参列表:getParameterTypes() 方法返回值类型:getReturnType() */ public class test02 { @Test public void test2() throws Exception{ //1.获取Class对象 Class<?> c= Class.forName("AtStudent.Student"); //2.获取包信息 Package pk = c.getPackage(); System.out.println(pk.getName());//AtStudent //3.获取Class的修饰符 int mod = c.getModifiers(); System.out.println(mod);//1 System.out.println(Modifier.toString(mod));//public //4.获取类名 System.out.println(c.getName());//AtStudent.Student //5.获取父类 Class<?> parent = c.getSuperclass(); System.out.println(parent.getName());//java.util.Date //6.获取父接口 Class<?>[] interfaces = c.getInterfaces(); for(Class<?> inter:interfaces) { System.out.println(inter);//interface java.io.Serializable } System.out.println(); //7.获取属性 Field[] alldeclaredFields = c.getDeclaredFields(); for(Field field:alldeclaredFields) { //属性名 System.out.println(field.getName()); //属性的修饰符 int fmod = field.getModifiers(); System.out.println(Modifier.toString(fmod));//public //属性的数据类型 Class<?> ftype = field.getType(); System.out.println(ftype.getName()); } System.out.println(); //8.获取构造器 Constructor<?>[] alldeclaredConstructors = c.getDeclaredConstructors(); for (Constructor<?> constructor:alldeclaredConstructors ) { //构造器名 System.out.println(constructor.getName()); //构造器的修饰符 int cmod = constructor.getModifiers(); System.out.println(Modifier.toString(cmod)); //构造器的形参列表 Class<?>[] parameterTypes = constructor.getParameterTypes(); for(Class<?> pt: parameterTypes) { System.out.println(pt.getName()); } } //9.方法 Method[] alldeclaredMethods = c.getDeclaredMethods(); for (Method method:alldeclaredMethods) { //方法名 System.out.println(method.getName()); //方法的修饰符 int cmod = method.getModifiers(); System.out.println(Modifier.toString(cmod)); //方法返回值类型 Class<?> returnType = method.getReturnType(); System.out.println(returnType); //方法的形参列表 Class<?>[] parameterTypes = method.getParameterTypes(); for(Class<?> pt: parameterTypes) { System.out.println(pt.getName()); } } }
标签:util inter modifier parameter field invoke super 类型 etc
原文地址:https://www.cnblogs.com/hapyygril/p/13032748.html