一、Class类的介绍
Class类的对象表示的是一个,类在内存中的class文件。
Class clz = String.class 表示String在内存中的class文件。
二、Class类的使用
1.获得Class类的对象
- 通过Class clz = Class.forName(“完全限定名”);
获得Class类的对象封装class文件
完全限定名:包名+类名.
-
通过类名获得Class对象,类名.class
-
通过某个类的对象,获得Class文件,String类在内存中的class文件。
2. Class类中提供的方法
-
读取clz对象表示的class文件中的构造方法
反射将类中的构造方法封装为对象,Constructor的对象。
Constructor<?>[] cons = clz.getConstructors();
for(Constructor c:cons) {
System.out.println(“student----”+c);
}
注意:getConstructors()的返回值为一个数组,且该方法的参数是一个可变参数。
可变参数:允许传入长度可变的参数
-
通过反射获得Student类中的某个构造方法
Constructor noArgs=clz.getConstructor(null); -
通过反射获得三个参数的构造方法,指定对应的参数对应的Class类的对象作为实参
Constructor inArgs=clz.getConstructor(Integer.class,String.class,String.class); -
读取clz对象表示的class文件中的成员方法
- clz.getMethods()
只能获得公共方法,包括从父类中继承的方法
例:Method[] methods = clz.getMethods();
for(Method m:methods) {
/ /打印出得到的方法名
System.out.println(“student-method====”+m);
}
- clz.getDeclaredMethods()
只能获得本类中的成员方法(public,private,protect.default)
例:Method[] methods2 = clz.getDeclaredMethods();
for(Method m:methods2) {
System.out.println(“student-method2====”+m);
}