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


    }
}
迎风少年
原文地址:https://www.cnblogs.com/ZYH-coder0927/p/13784234.html