2,加载路径获取class文件Class.forName(路径) 1
2-3获取加载类的属性getDeclaredFields 3
2-4获取构造器getDeclaredConstructors() 3
其他用到的共有的方法:(Method类,Field类,) 4
反射机制
1,运用反射必知
1,创建加载路径(Class文件的路径)
2,加载路径获取class文件Class.forName(路径)
有效的路径的三种方法:
(1)想要加载的类变量. getClass() --->new Student().getClass();
(2)类.class ---->Student.class;
(3)Class.forName(路径)
3,通过加载得到的Class变量可以实现的操作
Object s = c.newInstance();
(2)获取加载类的所有属性
Field[] field = c.getDeclaredFields();
Field f = field[i];
//获取属性的名称
String name = f.getName();
//获取属性的类型
Class type = f.getType();
(3)获取加载类的方法
第一种获取方法名的方法
String sName = "set"+name.substring(0,1).toUpperCase()+name.substring(1);
Method sm = c.getMethod(方法名, 参数类型);
第二种获取
Method[] ms = c.getDeclaredMethods();
Method m = ms[i];
//获得方法体名称
String mName = m.getName();
//获得返回值的类型
Class mtype = m.getReturnType();
//获取该方法体的所有参数的类型 没有参数的为空
Class[] params = m.getParameterTypes();
sm.invoke(加载类对象, 属性值);
//获取所有声明的
Constructor[] sts1 = c.getDeclaredConstructors();
//获取公共的
Constructor[] sts2 = c.getConstructors();
//构造器名称
String ctName = ct.getName();
//构造器的所有的参数的类型,没有的为空
Class[] ctpts = ct.getParameterTypes();
Class类
2-1返回加载类forName
forName(路径):返回与带有给定字符串名的类或接口相关联的 Class 对象。]
2-2创建加载类实例对象newInstance
newInstance():创建此 Class 对象所表示的类的一个新实例。如同用一个带有一个空参数列表的 new 表达式实例化该类。如果该类尚未初始化,则初始化这个类。
2-3获取加载类的属性getDeclaredFields
getDeclaredFields():返回 Field 对象的一个数组,这些对象反映此 Class 对象所表示的类或接口所声明的所有字段。
getDeclaredField():返回一个 Field 对象,该对象反映此 Class 对象所表示的类或接口的指定已声明字段。
getField():返回一个 Field 对象,它反映此 Class 对象所表示的类或接口的指定公共成员字段。
getFields():返回一个包含某些 Field 对象的数组,这些对象反映此 Class 对象所表示的类或接口的所有可访问公共字段。
2-4获取加载类的方法体getMethod
getMethod(方法体名name,参数类型parameterTypes):返回一个 Method 对象,它反映此 Class 对象所表示的类或接口的指定公共成员方法。
name 参数是一个 String,用于指定所需方法的简称。
parameterTypes 参数是按声明顺序标识该方法形参类型的 Class 对象的一个数组。如果 parameterTypes 为 null,则按空数组处理。
2-4获取构造器getDeclaredConstructors()
getConstructor():返回一个 Constructor 对象,它反映此 Class 对象所表示的类的指定公共构造方法。
getDeclaredConstructors():返回 Constructor 对象的一个数组,这些对象反映此 Class 对象表示的类声明的所有构造方法。它们是公共、保护、默认(包)访问和私有构造方法。返回数组中的元素没有排序,也没有任何特定的顺序。
如果该类存在一个默认构造方法,则它包含在返回的数组中。
如果此 Class 对象表示一个接口、一个基本类型、一个数组类或 void,则此方法返回一个长度为 0 的数组。
getDeclaredConstructor(parameterTypes):返回一个 Constructor 对象,该对象反映此 Class 对象所表示的类或接口的指定构造方法。
parameterTypes 参数是 Class 对象的一个数组,它按声明顺序标识构造方法的形参类型。 如果此 Class 对象表示非静态上下文中声明的内部类,则形参类型作为第一个参数包括显示封闭的实例。
其他用到的共有的方法:(Method类,Field类,)
Method类
1,调用方法invoke
invoke(对象,参数):对带有指定参数的指定对象调用由此 Method 对象表示的底层方法。
2获取名字getName()
getName():以 String 形式返回此 Method 对象表示的方法名称。
3获取返回参数的类型getReturnType()
getReturnType():返回一个 Class 对象,该对象描述了此 Method 对象所表示的方法的正式返回类型。
Field类
1获取名字getName()
getName():以 String 形式返回此 Method 对象表示的方法名称。
2,获取声明对象getType()
getType():返回一个 Class 对象,它标识了此 Field 对象所表示字段的声明类型。