(1)获取Class对象方法
Class c = p.getClass;
Class c2 = Person.class;
Class c3 = Class.forName(“com.xxx.Person”);
(2)获取父类
public Class<? super T> getSuperclass();
(3)获取类本身和其父类定义的公共、私有、保护的内部类
public Class<?>[] getClasses();
(4)获取定义它的外部类,匿名内部类
public Class<?> getEnclosingClass();
(5)获取类本身的所有字段,包括公有、保护、私有
public native Field[] getDeclaredField();
(6)获取类本身的指定字段,包括公有、保护、私有
public native Field getDeclaredField(String name) throws NoSuchFieldException;
(7)Field设置方法中,每个方法都有一个Object参数,对于非静态字段,它必须设置为具体类实例,而对于静态字段可设为null。对于私有字段,在进行访问的时候需要先调用field.setAccessible(true)。
(8)获取类本身所有方法
public Method[] getDeclaredMethods();
(9)获取类本身的指定方法
public Method getDeclaredMethod(String name,Class<?>... parameterTypes) throws NoSuchMethodException;
(10)执行方法
public native Object invoke(Object receiver,Object... args) ;
(11)反射获取Method对象方法
Class c = Class.forName(“com.xxx.Person”);
Constructor con = c.getConstructor(String.class,int.class);
Object obj = con.newInstance(“sds”,13);
Method m1 = c.getMethod(“show”,null);
m1.invoke(obj,null);