如何通过Class类获取类的信息
在Java中,Class
类是用于表示运行时数据在JVM中的类型。每个类都有一个对应的 Class
对象,包含了关于这个类的元数据信息。你可以通过以下几种方式获取一个类的 Class
对象:
-
使用
.class
语法:Class> clazz = MyClass.class;
-
使用对象的
getClass()
方法:MyClass myObject = new MyClass(); Class> clazz = myObject.getClass();
-
使用
Class.forName()
方法:Class> clazz = Class.forName("com.example.MyClass");
这种方式会动态加载类,如果类不存在会抛出
ClassNotFoundException
。
一旦你有了 Class
对象,你可以使用它来获取类的各种信息,例如:
-
获取类名:
String className = clazz.getName(); // 返回类的全限定名 String simpleName = clazz.getSimpleName(); // 返回类的简单名称
-
获取父类:
Class> superClass = clazz.getSuperclass();
-
获取实现的接口:
Class>[] interfaces = clazz.getInterfaces();
-
获取构造方法:
Constructor>[] constructors = clazz.getDeclaredConstructors();
-
获取方法:
Method[] methods = clazz.getDeclaredMethods();
-
获取字段:
Field[] fields = clazz.getDeclaredFields();
-
获取注解:
Annotation[] annotations = clazz.getAnnotations();
-
检查是否实现了某个接口:
boolean implementsInterface = clazz.isAssignableFrom(AnotherClass.class);
-
检查是否是某个类的子类:
boolean isSubclassOf = AnotherClass.class.isAssignableFrom(clazz);
-
创建类的实例(使用默认构造器):
Object instance = clazz.newInstance(); // 注意:从Java 9开始,推荐使用 clazz.getDeclaredConstructor().newInstance()
-
获取类的修饰符:
int modifiers = clazz.getModifiers();
这些只是 Class
类提供的一部分功能。通过这些方法,你可以获取到类的结构信息,并在运行时动态地操作类和对象。