【问题标题】:About the "class" property/field关于“类”属性/字段
【发布时间】:2010-11-07 12:12:24
【问题描述】:

当你这样做时:

MyClass.class.someMethod()

“类”字段究竟是什么?我在 API 文档中找不到它。是继承的静态字段吗?

我认为保留关键字不允许作为实体名称。

【问题讨论】:

标签: java


【解决方案1】:

请阅读:

类字面量是一个表达式,由类、接口、数组或原始类型或伪类型 void 的名称组成,后跟一个 `.'和令牌类。类文字的类型,C.Class,其中 C 是类、接口或数组类型的名称,是 Class。如果 p 是原始类型的名称,则设 B 是装箱转换后的 p 类型表达式的类型(第 5.1.7 节)。那么p.class的类型就是Class。 void.class 的类型是 Class。

Java Language Specification: 15.8.2. Class Literals

【讨论】:

  • 所以整个表达式 MyClass.class 代表一件事,即它不是成员访问。
【解决方案2】:

.class 实际上并不是一个字段。您可以将其视为更像是文件扩展名的“扩展名”。它是用于区分类对象而不是类的实例的标记。

【讨论】:

    【解决方案3】:

    MyClass 不是一个对象的名称,它是一个类名,所以这实际上是一种特殊的语法,它为命名类检索相应的Class<MyClass> 对象。它是一种语言特性,而不是 MyClass 类的真实属性。

    【讨论】:

    • 类 其中|T|实际上是 T 的原始类型。如果您有一个 list 类型为 List<String> 的变量,list.class 将返回 Class 类型。
    【解决方案4】:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-05
      • 1970-01-01
      • 1970-01-01
      • 2019-01-13
      • 2017-11-19
      • 2011-03-05
      相关资源
      最近更新 更多