この Java 演算子の優先順位と結合規則の表 によると、メンバー アクセスは演算子よりも優先されnew
ます。
ただし、クラスmyClass
と非静的メンバー関数が与えられたmyFunction
場合、次のコード行は有効です。
new myClass().myFunction();
.
が の前に評価される場合new
、この行はどのように実行できますか? 言い換えれば、なぜ括弧が必要ないのでしょうか?
(new myClass()).myFunction();
私の推測では、()
優先順位は と共有され.
ているため、myClass()
が最初に評価されるため、コンパイラはnew
キーワードを評価する前に、myClass
パラメーターがゼロのコンストラクターが呼び出されていることを認識しています。ただし、これは最初の行が と同一であることを暗示しているように見えますが、そうnew (myClass().myFunction());
ではありません。