文章目录
获取class对象
Java中的所有类型包括基本类型(int, long, float等等),即使是数组都有与之关联的Class类的对象。
如果你在编译期知道一个类的名字的话,那么你可以使用如下的方式获取一个类的Class对象
1 | Class orderClass = Order.class; |
如果你在编译期不知道类的名字,但是你可以在运行期获得到类名的字符串,那么你则可以这么做来获取Class对象
1 | String className = ... ;//在运行期获取的类名字符串 |
在使用Class.forName()方法时,你必须提供一个类的全名,这个全名包括类所在的包的名字
Class Name 类名
通过getName() 方法返回类的全限定类名,不包含包名使用getSimpleName()
1 | orderClass.getName();//com.larry.bean.Order |
Modifiers 修饰符
通过Class对象来访问一个类的修饰符,即public,private,static等的关键字;
修饰符都被包装成一个int类型的数字,这样每个修饰符都是一个位标识(flag bit),这个位标识可以设置和清除修饰符的类型;
使用java.lang.reflect.Modifier类中的方法来检查修饰符的类型。
1 | int modifiers = orderClass.getModifiers(); |
Package Info 包
Package对象你可以获取包的相关信息,比如包名
1 | Package packages = orderClass.getPackage(); |
Superclass 父类
superclass对象其实就是一个Class类的实例,所以你可以继续在这个对象上进行反射操作
1 | Class superClass = orderClass.getSuperclass(); |
Implemented Interfaces 实现的接口
获取指定类所实现的接口集合
1 | Class[] interfaces = orderClass.getInterfaces(); |
getInterfaces()方法仅仅只返回当前类所实现的接口。当前类的父类如果实现了接口,这些接口是不会在返回的Class集合中的,尽管实际上当前类其实已经实现了父类接口
Constructors 构造函数
获取构造函数的对象
1 | Constructor[] constructors = orderClass.getConstructors(); |
Method 方法
获取类的方法,Method[]数组里面只包含类中public修饰的方法
1 | Method[] methods = orderClass.getMethods(); |
Field 变量
获取成员变量
1 | Field[] fields = orderClass.getFields(); |
Annotations 注解
获取类的注解
1 | Annotation[] annotations = orderClass.getAnnotations(); |
