Java 什么是类描述符?

Java 什么是类描述符?,java,Java,什么是类描述符 它是特定类的类对象吗?是。请参阅。是的,类对象是特定“类”的类描述符 发件人: 此类的实例表示运行中Java应用程序中的类和接口。枚举是一种类,注释是一种接口。每个数组还属于一个类,该类作为一个类对象反映,该类对象由具有相同元素类型和维度数的所有数组共享。基本Java类型(boolean、byte、char、short、int、long、float和double)以及关键字void也表示为Class对象 下面是一个简单使用Class方法反射式描述类型的示例: static voi

什么是类描述符


它是特定类的
对象吗?

是。请参阅。

是的,
对象是特定“类”的类描述符

发件人:

此类的实例表示运行中Java应用程序中的类和接口。枚举是一种类,注释是一种接口。每个数组还属于一个类,该类作为一个类对象反映,该类对象由具有相同元素类型和维度数的所有数组共享。基本Java类型(boolean、byte、char、short、int、long、float和double)以及关键字void也表示为
Class
对象

下面是一个简单使用
Class
方法反射式描述类型的示例:

static void describe(Class<?> clazz, String pad, String leadin) {
    if (clazz == null) return;
    String type =
        clazz.isInterface() ? "interface" :
        clazz.isArray() ? "array" :
        clazz.isPrimitive() ? "primitive" :
        clazz.isEnum() ? "enum" :
        "class";
    System.out.printf("%s%s%s %s ( %s )%n",
        pad, leadin, type, clazz.getSimpleName(), clazz.getName());
    for (Class<?> interfaze : clazz.getInterfaces()) {
        describe(interfaze, pad + "   ", "implements ");
    }
    describe(clazz.getComponentType(), pad + "   ", "elements are ");
    describe(clazz.getSuperclass(), pad + "   ", "extends ");
}
static void describe(Class<?> clazz) {
    describe(clazz, "", "");
    System.out.println();
}
public static void main(String[] args) {
    describe(boolean[][].class);
    describe(java.math.RoundingMode.class);
    describe(java.util.ArrayList.class);
    describe(void.class);
}
API链接
    • 解释数组和基元的“时髦”名称
工具书类
    • 另请参见:有效Java第二版,第53项:首选接口而非反射

您只给出了很少的上下文,但“类描述符”可以是一个术语,用于描述反序列化对象所需的数据:

在这种情况下,“类描述符”实际上是
java.io.ObjectStreamClass
。ObjectStreamClass描述一个类,但它与类本身不同

array boolean[][] ( [[Z )
   implements interface Cloneable ( java.lang.Cloneable )
   implements interface Serializable ( java.io.Serializable )
   elements are array boolean[] ( [Z )
      implements interface Cloneable ( java.lang.Cloneable )
      implements interface Serializable ( java.io.Serializable )
      elements are primitive boolean ( boolean )
      extends class Object ( java.lang.Object )
   extends class Object ( java.lang.Object )

enum RoundingMode ( java.math.RoundingMode )
   extends class Enum ( java.lang.Enum )
      implements interface Comparable ( java.lang.Comparable )
      implements interface Serializable ( java.io.Serializable )
      extends class Object ( java.lang.Object )

class ArrayList ( java.util.ArrayList )
   implements interface List ( java.util.List )
      implements interface Collection ( java.util.Collection )
         implements interface Iterable ( java.lang.Iterable )
   implements interface RandomAccess ( java.util.RandomAccess )
   implements interface Cloneable ( java.lang.Cloneable )
   implements interface Serializable ( java.io.Serializable )
   extends class AbstractList ( java.util.AbstractList )
      implements interface List ( java.util.List )
         implements interface Collection ( java.util.Collection )
            implements interface Iterable ( java.lang.Iterable )
      extends class AbstractCollection ( java.util.AbstractCollection )
         implements interface Collection ( java.util.Collection )
            implements interface Iterable ( java.lang.Iterable )
         extends class Object ( java.lang.Object )

primitive void ( void )