在JLS 15.8.2中,它说
类文字是一个表达式,由类,接口,数组或基本类型的名称或伪类型void组成,后跟
.
和标记class
。< / p>
在WIKI中,它说
编程语言中的表达式是显式值,常量,变量,运算符和函数的组合......
我在here
中没有看到任何类似的操作符我知道String.class
是Class<String>
的一个实例,我只是不明白为什么我们可以写一个这样的表达式。
那么.class
到底是什么以及如何理解这种符号?
答案 0 :(得分:2)
String.class
是主表达式,它不会分解为操作数和运算符,但这并不能阻止它具有内部语法结构。我相信您会同意"
不是运算符,但"i am a string"
是一个文字表达式。
答案 1 :(得分:0)
如果对象foo
上有一个名为bar
的公共字段,您可以使用foo.bar
来处理该字段。这里也是一样 - 把它想象成一个名为class
的隐式公共静态字段。
答案 2 :(得分:0)
.
实际上是一个运算符:它是“点运算符”。官方的运营商名单中没有提到它,因为......谁知道。
然而,在the official tutorial中提及:
对象类之外的代码必须使用对象引用或表达式,后跟点(。)运算符,后跟简单的字段名称,
答案 3 :(得分:0)
语法Foo.class
是没有内存分配的(new Foo()).getClass()
的快捷方式。只要方法想要接收Class<?>
的实例作为参数,它就很有用。
标准库中的一些示例: