概念
在运行状态中,对于任意一个类,都能获取类的所有方法和属性;对应任意一个对象,都能调用它的任意一个方法和属性。
Reflection API介绍
- Class类: 代表一个类
- Field类:代表一个类的成员变量
- Method类:代表类的方法
- Constructor类:代表类的构造方法
- Array类:提供了动态创建数组,及访问数组的静态方法
Reflection.Class
Class概念
在java中,每一个class都有一个Class对象。我们每编写一个class,在编译完成后,在生成的.class文件中,都会产生一个Class对象,用于表示这个类的类型信息
Class的获取方式
- new一个class的实例,然后调用getClass()方法
- Class.forName("类名称")
- 直接调用.class
代码:
public class FancyToy extends Toy implements HasBatteries,Waterproof,ShootsThings {
FancyToy() { super(1); }
public static void main(String... args){
FancyToy fancyToy = new FancyToy();
Class<?> clazz01 = fancyToy.getClass(); //方法1,调用getClass()
Class<?> clazz03 = FancyToy.class; //方法3,运用.class的方式获取
try{
Class<?> clazz02 = Class.forName("com.vilian.thinkingInJava.chapter05.classForname.FancyToy"); #方法2,调用Class.forName()
System.out.println(clazz02.toString());
}catch(ClassNotFoundException e){
e.printStackTrace();
}
System.out.println(clazz01.toString());
System.out.println(clazz03.toString());
}
}
Class的一些常用API
- getSuperclass() 获取父类
网友评论