反射主要应用于框架。反射可以分析出类的各个组成部分。Java中有一个Class类用于代表某一类的字节码。
Class类提供加载某个类字节码的方法:forName();
另外两种得到class对象的方式[不常用]:类名.class和对象.getClass()
Class class1 = Class.forName("类的完全限定名");
Class class2 = Person.class;//假如有个Person类,同下
Class class3 = new Person().getClass();
Class对象的常用方法:
获取public 访问权限的
public Constructor<T> getConstructor(Class<?>... parameterTypes)
/*parameterTypes
参数是 Class
对象的一个数组,这些 Class 对象按声明顺序标识构造方法的形参类型。*/
public Method getMethod(String name,Class<?>... parameterTypes);
/*name
参数是一个String
,用于指定所需方法的简称。parameterTypes
参数是按声明顺序标识该方法形参类型的Class对象的一个数组。如果parameterTypes
为null
,则按空数组处理。 */
public Field getField(String name);
/*获取 private访问权限的name
参数是一个String
,用于指定所需字段的简称*/
public Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes)
public Method getDeclaredMethod(String name,Class<?>... parameterTypes)public Field getDeclaredField(String name)