反射之------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


    }
}
复制代码

 

posted @ 2020-10-09 09:56  Joker-0927  阅读(283)  评论(0)    收藏  举报
编辑推荐:
· AES 加密模式演进:从 ECB、CBC 到 GCM 的 C# 深度实践
· InnoDB为什么不用跳表,Redis为什么不用B+树?
· 记一次 C# 平台调用中因非托管 union 类型导致的内存访问越界
· [EF Core]聊聊“复合”属性
· 那些被推迟的 C# 14 特性及其背后的故事
阅读排行:
· 博客园出海记-开篇:扬帆启航
· 微软开源的 MCP 教程「GitHub 热点速览」
· 记一次 .NET 某汽车控制焊接软件 卡死分析
· 关于布尔类型的变量不要加 is 前缀,被网友们吐槽了,特来完善下
· C#中的多级缓存架构设计与实现深度解析
// 侧边栏目录
点击右上角即可分享
微信分享提示