欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 手游 > 【java】在 Java 中,获取一个类的`Class`对象有多种方式

【java】在 Java 中,获取一个类的`Class`对象有多种方式

2025/4/8 22:42:34 来源:https://blog.csdn.net/u011144881/article/details/147017612  浏览:    关键词:【java】在 Java 中,获取一个类的`Class`对象有多种方式

在 Java 中,获取一个类的Class对象有多种方式。Class对象代表了 Java 中的一个类或接口的运行时类信息,可以用于反射操作。以下是获取Class对象的几种常见方法:

1.使用.class属性
每个类都有一个.class属性,可以直接获取该类的Class对象。

示例代码

public class MyClass {public static void main(String[] args) {Class<MyClass> clazz = MyClass.class;System.out.println("Class object: " + clazz);}
}

2.使用对象的.getClass()方法
任何 Java 对象都有一个.getClass()方法,可以获取该对象的Class对象。

示例代码

public class MyClass {public static void main(String[] args) {MyClass obj = new MyClass();Class<?> clazz = obj.getClass();System.out.println("Class object: " + clazz);}
}

3.使用完全限定类名调用Class.forName()
Class.forName()方法可以通过类的完全限定名来获取Class对象。这种方法在加载类时会触发类的初始化。

示例代码

public class MyClass {public static void main(String[] args) {try {Class<?> clazz = Class.forName("com.example.MyClass");System.out.println("Class object: " + clazz);} catch (ClassNotFoundException e) {e.printStackTrace();}}
}

4.使用.getClassLoader().loadClass()
ClassLoader.loadClass()方法也可以通过类的完全限定名来加载类并获取Class对象。与Class.forName()不同,loadClass()不会触发类的初始化。

示例代码

public class MyClass {public static void main(String[] args) {try {ClassLoader classLoader = MyClass.class.getClassLoader();Class<?> clazz = classLoader.loadClass("com.example.MyClass");System.out.println("Class object: " + clazz);} catch (ClassNotFoundException e) {e.printStackTrace();}}
}

5.使用.getDeclaredClass()方法(Java 9+)
从 Java 9 开始,Class类提供了一个新的方法getDeclaredClass(),可以获取类的Class对象。

示例代码

public class MyClass {public static void main(String[] args) {try {Class<?> clazz = Class.getDeclaredClass("com.example.MyClass");System.out.println("Class object: " + clazz);} catch (ClassNotFoundException e) {e.printStackTrace();}}
}

6.使用.getDeclaredConstructor().newInstance()(间接获取)
虽然这种方法不是直接获取Class对象,但可以通过创建对象来间接获取Class对象。

示例代码

import java.lang.reflect.Constructor;public class MyClass {public static void main(String[] args) {try {Constructor<MyClass> constructor = MyClass.class.getDeclaredConstructor();constructor.setAccessible(true);MyClass instance = constructor.newInstance();Class<?> clazz = instance.getClass();System.out.println("Class object: " + clazz);} catch (Exception e) {e.printStackTrace();}}
}

总结
以下是获取Class对象的几种常见方法:

• 使用.class属性:直接获取类的Class对象。

• 使用对象的.getClass()方法:通过对象获取其Class对象。

• 使用Class.forName():通过类的完全限定名获取Class对象,会触发类的初始化。

• 使用ClassLoader.loadClass():通过类的完全限定名加载类,不会触发类的初始化。

• 使用Class.getDeclaredClass()(Java 9+):通过类的完全限定名获取Class对象。

• 通过创建对象间接获取:使用反射创建对象后,通过对象的.getClass()方法获取Class对象。

根据你的具体需求,可以选择合适的方法来获取Class对象。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词