推荐答案
在 Java 中,获取一个类的 Class 对象有以下几种常见方式:
使用
.class语法:Class<?> clazz = MyClass.class;
通过对象实例调用
getClass()方法:MyClass obj = new MyClass(); Class<?> clazz = obj.getClass();
使用
Class.forName()方法:Class<?> clazz = Class.forName("com.example.MyClass");
本题详细解读
1. 使用 .class 语法
.class 语法是最直接的方式,适用于在编译时已知类名的情况。它返回该类的 Class 对象,且不会触发类的初始化。
示例:
Class<?> clazz = String.class;
2. 通过对象实例调用 getClass() 方法
getClass() 是 Object 类的一个方法,因此所有 Java 对象都可以调用它来获取其运行时类的 Class 对象。这种方式适用于已经有一个对象实例的情况。
示例:
String str = "Hello"; Class<?> clazz = str.getClass();
3. 使用 Class.forName() 方法
Class.forName() 方法通过类的全限定名(包括包名)来加载类并返回其 Class 对象。这种方式适用于类名在运行时才确定的情况。需要注意的是,Class.forName() 会触发类的初始化。
示例:
Class<?> clazz = Class.forName("java.lang.String");注意事项
- 类初始化:
Class.forName()会触发类的静态初始化块执行,而.class语法和getClass()不会。 - 异常处理:
Class.forName()可能会抛出ClassNotFoundException,因此需要捕获或声明抛出该异常。 - 性能:
.class语法通常是最快的,因为它不涉及方法调用或类加载过程。