相关疑难解决方法(0)

在没有括号的Java中调用新对象的方法:操作违规的顺序?

根据此Java运算符优先级和关联性表,成员访问优先级高于new运算符.

但是,给定一个类myClass和一个非静态成员函数myFunction,以下代码行是有效的:

new myClass().myFunction();

如果.之前评估过new,该行怎么执行?换句话说,为什么不需要括号?

(new myClass()).myFunction();

我的猜测是,由于()共享优先.,因此myClass()首先进行评估,因此编译器甚至在评估new关键字之前就知道myClass正在调用具有零参数的构造函数.然而,这似乎仍然暗示第一行应该是相同的new (myClass().myFunction());,但事实并非如此.

java parsing operator-precedence

30
推荐指数
1
解决办法
4060
查看次数

标签 统计

java ×1

operator-precedence ×1

parsing ×1