在获得某个类所对应的Class对象之后,程序通过调用Class对象的方法来获得所对应类的真实信息,主要通过Class对象的大量的实例方法来实现。
一、获取类的构造方法:
1、getConstructor(Class[] params):返回此Class对象所对应的类的指定的public构造方法,params参数是按申明顺序标识该方法参数类型的Class对象的一个数组。构造方法的参数类型与params所指定的参数类型所匹配。
例如: Constructor co = c.getConstructor(String.class,list.class);
2、getConsturctors():返回此Class对象所表示的类的所有public构造方法;
3、getDeclaredConstructor():返回此Class对象所表示的类的指定构造方法,与构造方法的访问级别无关。
4、getDeclaredConsturctors():返回所有的、与访问级别无关的构造方法。
备注:Declared表示公开的意思,表示方法不会考虑访问级别。
二、获取类的其他方法:
1、Method getMethod(String name,Class[] params):返回Class对象对应的类的指定的public方法,name参数指定方法名、params按声明顺序标识该方法参数类型的Class对象的一个数组。
示例:
假定c为某Class对象
c.getMethod("info",String.class); 表示获取的是c对应的类中名称为info的方法,这个方法中有一个参数,类型为String
c.getMethod("info",String.class,Integer.class);还是返回c对应的类中名称为info的方法,这个方法有俩个参数。
2、Method[] getMethods():返回Class对象对应的类的所有的 public方法,返回类型为Method的数组。
3、Method getDeclaredMethod(String name,Class[] params):返回的指定方法、与方法的访问级别无关;
4、Method[] getDeclaredMethods():返回Class对象对应的类的所有方法(与访问级别无关),返回类型为Method的数组。
三、获取类的属性:
Field getField(String name):返回Class对象对应的类的指定的public属性,name参数指定属性名。
例如,c.getField("age");返回c表示类中,名称为age的那个属性。
其他的方法:getFields()、getDeclaredField()、geDeclaredFields()方法与上面的类似,不再赘述。
此外,还可以通过相关的方法获取Class对象对应类的注释getAnnotations()、内部类getDeclaredClasses、外部类getDeclaringClasses。
四、示例代码:
Class<A> cla = A.class;
Constructor[] cstr = cla.getDeclaredConstructors();
system.out.println("=======获取A类的全部构造方法,并显示======");
//利用for each语句
for(Constructor c:cstr){
system.out.println(c.toString());
}