反射之------Class实例可以是那些类型?
概述:
关于Class实例的获得的四种方法中我们知道可以通过类名.class获得对应的Class实例,也就是说所有被加载到内存中的当前运行时类都对应一个Class实例,而这个“当前运行时类”并不是指一定是类的概念,也就是Class实例的类型并不是只有类的概念,Class实例实际上有:
Class实例的类型:
- class
外部类,成员(成员内部类,静态内部类),局部内部类,匿名内部类 - interface
接口 - []
数组 - enum
枚举 - annotation
注解 - primitive type
基本数据类型 - void
代码演示:
import java.lang.annotation.ElementType; public class GetClassDemos { public static void main(String[] args) { //1.class具体类 Class<Object> objectClass = Object.class; System.out.println("class具体类"+objectClass); //2.接口 Class<Comparable> comparableClass = Comparable.class; System.out.println("接口"+comparableClass); //3.数组 Class<String[]> strArrClass1 = String[].class; Class<String[][]> strArrClass2 = String[][].class; System.out.println("数组"+strArrClass1); System.out.println("数组"+strArrClass2); //不同维度的数组的Class对象是不同的 //4.枚举 Class<ElementType> elementTypeClass = ElementType.class; System.out.println("枚举"+elementTypeClass); //5.注解 Class<Override> overrideClass = Override.class; System.out.println("注解"+overrideClass); //6.基本数据类型 Class<Integer> integerClass = int.class; System.out.println("基本数据类型"+integerClass); //7.void Class<Void> voidClass = void.class; System.out.println("void"+voidClass); //关于数组的注意: int[] a=new int[100]; int[] b=new int[200]; Class aClass = a.getClass(); Class bClass = b.getClass(); System.out.println(aClass==bClass);//只要数组类类型和维度相同那么就是同一个Class } }
迎风少年
【推荐】2025 HarmonyOS 鸿蒙创新赛正式启动,百万大奖等你挑战
【推荐】博客园的心动:当一群程序员决定开源共建一个真诚相亲平台
【推荐】开源 Linux 服务器运维管理面板 1Panel V2 版本正式发布
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 Redis 客户端超时到 .NET 线程池挑战
· C23和C++26的#embed嵌入资源指南
· 「EF Core」框架是如何识别实体类的属性和主键的
· 独立开发,这条路可行吗?
· 我在厂里搞 wine 的日子
· 他没买 iPad,而是花了半年时间,为所有“穷学生”写了个笔记神器
· Visual Studio 现已支持新的、更简洁的解决方案文件(slnx)格式
· 从 Redis 客户端超时到 .NET 线程池挑战:饥饿、窃取与阻塞的全景解析
· 2025年中总结:我想我克服公众演讲的恐惧了,一个社恐分子突破自我的故事
· 3.1k star!推荐一款开源基于AI实现的浏览器自动化插件工具 !