在Java教程http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html中,类文字被称为"文字类型"
最后,还有一种特殊的文字称为类文字,通过获取类型名称并附加".class"形成; 例如,String.class.这指的是表示类型本身的对象(类型为Class).
但是在Java规范http://docs.oracle.com/javase/specs/jls/se7/html/中,类文字不是放在3.10 Literals类型下,而是置于15.8之下.主要表达
那为什么呢?
Java中的类文字究竟是什么类型的?
擦除类型是java.lang.Class.
非擦除类型Foo.class将是java.lang.Class<Foo>.
它作为主要表达式在JLS中的原因是技术性的:
类文字不是单一文字.它是三个(或更多)不同的符号,它们组合起来形成这种"不变的,字面上的东西".
他们决定调用它字面,因为该值是一个常数.
从语法的角度来看,它必须与(其他)主要表达式进入语法的相同部分......以便语法描述语言而没有大量的歧义/上下文敏感性.
所以它真的可以进入JLS的任何一个地方.但他们必须把它放在一个地方.由于Literal部分中的其他文字是单一的(即一个符号),因此将它放入Primary Expression部分是有意义的.
但最重要的是,为什么他们决定以这种方式组织JLS并不重要.类文字的含义并不取决于它的指定位置.