461. Java 反射 - 获取类的成员类 文章目录461. Java 反射 - 获取类的成员类1. 获取所有 **公共的成员类**getClasses()用法示例输出结果要点说明2. 获取 **所有成员类不限访问级别**getDeclaredClasses()用法示例输出结果要点说明3. getClasses() vs getDeclaredClasses() 对比表4. 示例定义一个外部类 内部类使用反射输出对比5. 总结461. Java 反射 - 获取类的成员类在 Java 中一个类可以定义内部类member class。这些内部类可以是publicprotected包可见package-privateprivate反射 API 提供了两种方法来获取这些内部类1. 获取所有公共的成员类getClasses()用法示例Class?cCharacter.class;for(ClassmemberClass:c.getClasses()){System.out.println(class: memberClass);}输出结果class:classjava.lang.Character$UnicodeBlockclass:classjava.lang.Character$UnicodeScriptclass:classjava.lang.Character$Subset要点说明返回当前类 所有父类的公共成员类。内部类的名字中会带$比如Character$UnicodeBlock。输出结果包括Character自己的成员类也包括继承自父类的公共成员类。2. 获取所有成员类不限访问级别getDeclaredClasses()用法示例Class?cCharacter.class;for(ClassmemberClass:c.getDeclaredClasses()){System.out.println(class: memberClass);}输出结果class:classjava.lang.Character$CharacterCacheclass:classjava.lang.Character$UnicodeBlockclass:classjava.lang.Character$UnicodeScriptclass:classjava.lang.Character$Subset要点说明返回当前类自己声明的所有成员类包括public、protected、包可见和private。不会返回父类的成员类。在Character类中除了公共类还能看到一个私有内部类CharacterCache。这个类在Character内部用来缓存常用字符对象0-127。它是 JDK 内部的优化实现。3.getClasses()vsgetDeclaredClasses()对比表方法返回范围是否包含父类成员类getClasses()所有public成员类✅ 包含父类getDeclaredClasses()当前类声明的全部成员类public protected 包可见 private❌ 不包含父类4. 示例定义一个外部类 内部类publicclassParent{publicstaticclassPublicInner{}protectedstaticclassProtectedInner{}staticclassPackageInner{}privatestaticclassPrivateInner{}}publicclassOuterextendsParent{publicstaticclassPublicInner{}protectedstaticclassProtectedInner{}staticclassPackageInner{}privatestaticclassPrivateInner{}}使用反射for(varclazz:Outer.class.getClasses()){System.out.println(getClasses(): clazz);}for(varclazz:Outer.class.getDeclaredClasses()){System.out.println(getDeclaredClasses(): clazz);}输出对比getClasses():classchapter461.Outer$PublicInnergetClasses():classchapter461.Parent$PublicInnergetDeclaredClasses():classchapter461.Outer$PrivateInnergetDeclaredClasses():classchapter461.Outer$PackageInnergetDeclaredClasses():classchapter461.Outer$ProtectedInnergetDeclaredClasses():classchapter461.Outer$PublicInner5. 总结getClasses()获取公共成员类包含父类的。getDeclaredClasses()获取当前类自己声明的所有成员类包括私有的。内部类在字节码里以$连接外部类和内部类名称。通过反射你可以看到一些在代码中无法直接访问的私有实现细节。

相关新闻

最新新闻

本地化RAG知识库系统:不依赖API的中文文档问答实战

本地化RAG知识库系统:不依赖API的中文文档问答实战

简介:这是一套面向人工智能、计算机及相关专业在校学生与初学者的RAG知识库问答系统完整实现方案,聚焦于解决非结构化文档的精准检索与生成式问答难题,适用于课程设计、毕业设计、项目立项演示及技术进阶学习。资源包共22个文件,含…

2026/9/2 9:03:17
SmartTube 电视版:3 种安装路径 + 一屏设置推荐的无广告观影指南

SmartTube 电视版:3 种安装路径 + 一屏设置推荐的无广告观影指南

SmartTube 电视版:3 种安装路径 一屏设置推荐的无广告观影指南 【免费下载链接】SmartTube Browse media content with your own rules on Android TV 项目地址: https://gitcode.com/GitHub_Trending/smar/SmartTube 晚上十点,电视大屏上跟着教…

2026/9/2 9:03:17
Awesome Agent Skills 财务技能实战指南:1497+ 代理技能安装路径与 ROI 分析教程

Awesome Agent Skills 财务技能实战指南:1497+ 代理技能安装路径与 ROI 分析教程

Awesome Agent Skills 财务技能实战指南:1497 代理技能安装路径与 ROI 分析教程 【免费下载链接】awesome-agent-skills A curated collection of 1000 agent skills from official dev teams and the community, compatible with Claude Code, Codex, Gemini CLI, …

2026/9/2 9:03:17
X-SRAM:2T单元设计如何将片上缓存容量提升5倍?

X-SRAM:2T单元设计如何将片上缓存容量提升5倍?

这次我们来看一个半导体领域的新动向:Neo Semiconductor 公布了一种名为 X-SRAM 的 2T SRAM 设计。这个项目的核心不是软件或AI模型,而是硬件层面的底层技术创新。它宣称能在不增加芯片面积的前提下,将片上缓存容量提升至传统6T SRAM的5倍。对…

2026/9/2 9:03:17
MTK开发源码包全解析:从目录结构到编译调试实战

MTK开发源码包全解析:从目录结构到编译调试实战

简介:面向MediaTek芯片平台开发者的MTK开发源码包,用于在MTK硬件上构建、调试和优化应用程序及系统级软件。压缩包共857个文件,大小仅2.7MB,主要包含Perl脚本(pl/pm)、Shell脚本(sh)…

2026/9/2 9:03:17
STM32裸机下构建高可靠SD卡数据流水线

STM32裸机下构建高可靠SD卡数据流水线

简介:本资源是一套基于STM32F429平台实现SD卡FatFS文件系统并生成CSV数据文件的完整嵌入式开发工程,面向嵌入式初学者与进阶开发者,解决嵌入式设备本地结构化数据存储与导出的实际需求。工程采用HAL库驱动SPI接口与SD卡通信,集成F…

2026/9/2 8:58:15