尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

458. Java 反射 - .class 语法

458. Java 反射 - .class 语法
📅 发布时间:2026/7/9 18:49:49

文章目录

  • 458. Java 反射 - `.class` 语法
    • 1. 为什么需要 `.class`?
    • 2. 基本类型的 Class
      • 错误示例:
      • 正确示例:
    • 3. 引用类型的 Class
    • 4. 多维数组的 Class
    • 5. `.class` 与 `getClass()` 的对比
    • 6. 总结

458. Java 反射 -.class语法

1. 为什么需要.class?

前面我们讲过:如果有一个对象实例,可以通过obj.getClass()拿到它的Class对象。
但是——如果我们手上没有对象实例,或者我们想要获取一个基本类型的Class,怎么办呢?

答案就是:使用.class语法。


2. 基本类型的 Class

对于基本类型(primitive types),不能调用getClass(),因为它们不是对象。

错误示例:

booleanb=true;Class<?>c=b.getClass();// ❌ 编译错误

编译器提示:基本类型不可被解引用。

正确示例:

Class<?>c=boolean.class;System.out.println("class: "+c);

输出:

class:boolean

✅总结:

  • boolean.class返回的就是Class对象,表示boolean这种类型本身。
  • 同理,你可以用int.class、char.class、double.class,等等。

3. 引用类型的 Class

.class不仅适用于基本类型,也适用于引用类型。

Class<?>c=java.io.PrintStream.class;System.out.println("class: "+c);

输出:

class:classjava.io.PrintStream

这里的c就是PrintStream类型的 Class 对象。
在反射场景中,这非常有用:

  • 无需对象实例
  • 无需Class.forName("全限定名")
  • 编译期就能保证类型存在

4. 多维数组的 Class

数组在 Java 中也是对象,所以也可以用.class来获取Class。

Class<?>c=int[][][].class;System.out.println("class: "+c);

输出:

class:class[[[I

这里有几个关键点:

  • [[[I是 JVM 的内部表示(Type Descriptor)
  • 每一个[表示一维数组,所以[[[I表示int的三维数组
  • I表示int类型(常见的缩写还有:Z=boolean,B=byte,C=char,D=double等)

5..class与getClass()的对比

用法适用场景示例
obj.getClass()已有实例,运行时确定"hello".getClass()→String.class
TypeName.class已知类型,编译期确定String.class,int.class
Class.forName("全限定名")运行时动态加载Class.forName("java.util.HashMap")

⚡口诀:

  • 编译期有类型→ 用.class
  • 运行时有对象→ 用obj.getClass()
  • 运行时只有类名字符串→ 用Class.forName()

6. 总结

  • .class是获取类型对应的 Class 对象的简洁方式
  • 对基本类型必须用.class(因为没有对象实例)
  • .class也能用于数组、接口、枚举等所有类型
  • JVM 内部使用特殊的描述符来表示数组类型([I,[[Ljava.lang.String;等)

相关新闻

  • L9958与PIC18LF45K80电机控制方案设计与优化
  • 软考高级论文科目写作要点整理
  • 抖音批量下载神器:5分钟搞定无水印视频素材收集的终极指南

最新新闻

  • AI编程新范式:基于LLM与代码沙箱的自动化任务处理实践
  • 小米12S 刷入 EU 版澎湃OS 1.0:KernelSU 与 LSPosed 双模块完整配置指南
  • C++ STL 自定义比较函数:4种方法在 sort 与 priority_queue 中的差异详解
  • ks-vaudit使用技巧:5个提升屏幕录制审计效率的实用方法
  • libevhtp入门指南:如何快速构建高性能HTTP服务器
  • openeuler/yocto-meta-qt5:嵌入式Linux Qt5开发终极指南

日新闻

  • SQL 查询语句的标准逻辑执行顺序(即语义处理顺序),它与实际书写顺序不同,但决定了数据库如何解析和执行查询
  • ORB-SLAM2 重定位模块深度解析:从 BoW 候选帧到 PnP 优化的 6 步流程
  • 罗技鼠标宏压枪脚本终极指南:从原理到实战的完整解析

周新闻

  • 基于YOLOv12的番茄成熟度智能检测系统开发
  • 终极RimWorld模组管理指南:用RimSort告别模组冲突烦恼
  • AI Agent框架开发:从理论到实践的完整指南

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号