Java | java.lang.constant.ClassDesc 接口

前言


  • 本文原创作者为 Blume,版权归原创作者所有。
  • 本文主要内容根据 Java API 官方文档中的《ClassDesc》编写而成。
  • 本文更新(修订)于 2021 年 3 月 23 日。
  • 本文网址为 https://blog.csdn.net/weixin_48390834/article/details/114952033
  • 商业性转载请联系原创作者,非商业性转载请注明出处。

【目录】 【概述】 【方法摘要】

定义


ClassDesc 接口,在 Java 中用来表示一个对类、接口、数组或原初类型进行描述的标称描述符。ClassDesc 接口位于 java.base 模块中的 java.lang.constant 包中。

  • 所有父接口:
    ConstantDesc,TypeDescriptor,TypeDescriptor.OfField<ClassDesc>

  • 声明:
    public interface ClassDesc extends ConstantDesc, TypeDescriptor.OfField<ClassDesc>

【目录】 【方法摘要】

概述


在 ConstantDescs 类中,已预定义了公共系统类型(包括所有原初类型)的 ClassDesc 常量。

  • 在 java.lang.constant 包中的 API,将 void 视为原初类型。
  • 原初类型(Primitive Type),又称“原始类型”、“内置类型”、“简单类型”、“基元类型”、“基础类型”、“基本类型”等。
  • 请参阅 ConstantDescs 类。

如需为类或接口类型创建 ClassDesc 对象,请使用 of(String) 方法of(String, String) 方法ofDescriptor(String) 方法

如需为原初类型创建 ClassDesc 对象,请使用 ofDescriptor(String) 方法

如需为数组类型创建 ClassDesc 对象,请使用 ofDescriptor(String) 方法;或先获取组件类型的 ClassDesc 对象,再调用 arrayType() 方法arrayType(int) 方法

API 注释

Java 语言可能在未来允许将 ClassDesc 接口改成一个封闭接口,除了显式允许的类型外,它将禁止子类化。非平台类不应直接实现 ClassDesc 接口。

起始版本

Java SE 12 起,提供本接口。

【目录】 【概述】

方法摘要


修饰符及类型 方法 描述
default ClassDesc arrayType() 返回一个数组类型的 ClassDesc 对象,该数组类型的组件类型由返回的 ClassDesc 对象进行描述。
Default ClassDesc arrayType(int rank) 返回一个指定维数的数组类型的 ClassDesc 对象,该数组类型的组件类型由返回的 ClassDesc 对象进行描述。
Default ClassDesc componentType() 若当前的 ClassDesc 对象描述的是数组类型,则返回它的组件类型;否则返回 null。
String descriptorString() 返回当前 ClassDesc 对象所描述的类型的描述符字符串。
Default String displayName() 返回当前 ClassDesc 对象所描述的类型的易读懂的名称。
Boolean equals(Object o) 比较当前的 ClassDesc 对象与指定的对象是否相等(相同)。
Default boolean isArray() 确定当前的 ClassDesc 对象是否描述一个数组类型。
Default boolean isClassOrInterface() 确定当前的 ClassDesc 对象是否描述一个类或接口类型。
Default boolean isPrimitive() 确定当前的 ClassDesc 对象是否描述一个原初类型。
Default ClassDesc nested(String nestedName) 返回当前 ClassDesc 对象所描述的类或接口类型的指定嵌套类的 ClassDesc 对象。
Default ClassDesc nested(String firstNestedName, String… moreNestedNames) 返回当前 ClassDesc 对象所描述的类或接口类型的指定嵌套类的 ClassDesc 对象。
Static ClassDesc of(String name) 返回为类或接口类型指定名称的 ClassDesc 对象。
Static ClassDesc of(String packageName, String className) 返回为类或接口类型指定包名和类名的 ClassDesc 对象。
Static ClassDesc ofDescriptor(String descriptor) 返回为类、接口、数组或原初类型指定描述符字符串的 ClassDesc 对象。
Default String packageName() 若当前的 ClassDesc 对象描述的是类或接口类型,则返回它的包名;否则返回空字符串。

【目录】 【概述】 【方法摘要】

方法详述


arrayType()

  • 声明:
    default ClassDesc arrayType()

  • 描述:
    返回一个数组类型的 ClassDesc 对象,该数组类型的组件类型由返回的 ClassDesc 对象进行描述。

  • 返回:
    返回一个描述数组类型的 ClassDesc 对象。

  • 异常:
    若返回时所描述的数组维数大于 255,则将导致抛出 IllegalStateException(非法状态异常)。

  • 请参阅:
    arrayType(int) 方法componentType() 方法
    TypeDescriptor.OfField.arrayType() 方法,Class.arrayType() 方法。

  • 示例:
    请参阅 arrayType(int) 示例

【目录】 【概述】 【方法摘要】

arrayType(int)

  • 声明:
    default ClassDesc arrayType(int rank)

  • 描述:
    返回一个指定维数的数组类型的 ClassDesc 对象,该数组类型的组件类型由返回的 ClassDesc 对象进行描述。

  • 参数:
    rank - 表示数组的维数。

  • 返回:
    返回一个描述数组类型的 ClassDesc 对象。

  • 异常:
    若返回时所描述的数组维数大于 255,则将导致抛出 IllegalStateException(非法状态异常)。

  • 请参阅:
    arrayType() 方法componentType() 方法

  • 示例:

import java.lang.constant.ClassDesc;
import java.lang.constant.ConstantDescs;

/**
 * arrayType(int) 示例
 *
 * @author Blume
 */
public class arrayType_demo {
   
    public static void main(String[] args) {
   

        // 创建 ClassDesc 对象,它描述的是 int 原初类型的一维数组类型。
        ClassDesc cd = ConstantDescs.CD_int.arrayType();
        System.out.println("cd 所描述的是:".concat(cd.displayName()));
        System.out.println("cd 的组件类型:".concat(cd.componentType().displayName()));

        // 创建 ClassDesc 对象,它将 cd 的二维数组类型描述为 int 原初类型的三维数组类型。
        int rank = 2;
        ClassDesc demo = cd.arrayType(rank);
        System.out.println("\r\ndemo 所描述的是:".
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值