全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 2026-05-11 5 分钟 ✍️ juanwangdev

Java Class对象获取

Class对象是反射操作的起点,获取方式多样,各有适用场景。

三种获取方式

1. 类名.class

Java
Class<?> stringClass = String.class;
Class<?> intClass = int.class;          // 基本类型
Class<?> intArrayClass = int[].class;   // 数组类型
Class<?> voidClass = void.class;        // void类型

适用场景:编译期已知具体类型,代码清晰、性能最优。

2. 对象.getClass()

Java
String str = "hello";
Class<?> clazz = str.getClass();

List<String> list = new ArrayList<>();
Class<?> listClass = list.getClass();  // 返回ArrayList.class

适用场景:运行时已有对象实例,需要获取实际运行时类型。

3. Class.forName()

Java
// 全限定类名
Class<?> clazz = Class.forName("java.lang.String");

// 数组类型需要特殊写法
Class<?> intArrayClass = Class.forName("[I");           // int[]
Class<?> stringArrayClass = Class.forName("[Ljava.lang.String;");  // String[]

适用场景:配置文件读取类名、动态加载类,最灵活但需处理异常。

方式对比

方式编译期检查需要实例抛异常典型用途
类名.class常量引用
getClass()运行时类型
forName()动态加载

Class类常用方法

Java
// 类基本信息
String name = clazz.getName();              // java.lang.String
String simpleName = clazz.getSimpleName(); // String
Package pkg = clazz.getPackage();           // package java.lang

// 类型判断
clazz.isArray();           // 是否数组
clazz.isPrimitive();       // 是否基本类型
clazz.isInterface();       // 是否接口
clazz.isAnnotation();      // 是否注解
clazz.isEnum();            // 是否枚举

// 获取组件类型(数组)
Class<?> componentType = clazz.getComponentType();

基本类型与包装类

Java
// 基本类型Class
Class<Integer> intClass = int.class;

// 包装类Class
Class<Integer> integerClass = Integer.class;

// 它们不相等!
System.out.println(intClass == integerClass); // false

// 获取包装类对应的基本类型
Class<?> primitiveType = Integer.TYPE;  // int.class

注意事项

Class.forName() 会触发类初始化(执行静态代码块),如需避免可用 forName(className, false, classLoader)

对于数组类型,getName() 返回特殊编码如 [I[Ljava.lang.Object;

泛型在运行时会被擦除,List.class 和 List.class 是同一个Class对象

要点总结

  1. 三种获取方式:.class(编译期)、getClass()(运行时实例)、forName()(动态加载)
  2. .class 性能最优,forName() 最灵活
  3. 注意基本类型与包装类的Class对象不同
  4. 数组类型的Class有特殊表示方式

📝 发现内容有误?点击此处直接编辑

← 上一篇 类型通配符
下一篇 → Java元注解
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库