Java中类文本的具体类型是什么?

Java中类文本的具体类型是什么?,java,literals,Java,Literals,在Java教程中,类文字被称为“文字类型” 最后,还有一种特殊的文字称为类 文本,由接受类型名并附加“.class”组成;对于 例如,String.class。这指的是 表示类型本身 但是在Java规范中,类文本不放在3.10文本类型下,而是放在15.8下。主要表达 那为什么呢 Java中类文本的具体类型是什么 被擦除的类型是java.lang.Class Foo.class的非擦除类型将是java.lang.class 它在JLS中作为主要表达式的原因是技术性的: 类文字不是单一文字。正是

在Java教程中,类文字被称为“文字类型”

最后,还有一种特殊的文字称为类 文本,由接受类型名并附加“.class”组成;对于 例如,String.class。这指的是 表示类型本身

但是在Java规范中,类文本不放在3.10文本类型下,而是放在15.8下。主要表达

那为什么呢

Java中类文本的具体类型是什么

被擦除的类型是
java.lang.Class

Foo.class
的非擦除类型将是
java.lang.class


它在JLS中作为主要表达式的原因是技术性的:

  • 类文字不是单一文字。正是三个(或更多)不同的符号组合在一起,形成了这种“恒常性,字面上的东西”

  • 他们决定称之为文字,因为该值是常量

  • 从句法的角度来看,它必须和(其他)主要表达进入语法的同一部分。。。为了使语法能够描述语言,而不存在大量歧义/上下文敏感性

所以它真的可以在JLS的任何一个地方。但他们只能把它放在一个地方。由于文本部分中的其他文本是统一的(即一个符号),因此将其放入主表达式部分是有意义的


但归根结底,他们为什么决定以这种方式组织JLS并不重要。类文字的含义不取决于其指定的位置。

不要将名称太字面化。一个
Foo.class
相当于
class.forName(“pkg.Foo”)
,它比像
1
“abc”
这样的简单文字要复杂得多

他问的是语言,而不是API。在那种情况下,你的陈述基本上是错误的。