37

この Java 演算子の優先順位と結合規則の表 によると、メンバー アクセスは演算子よりも優先されnewます。

ただし、クラスmyClassと非静的メンバー関数が与えられたmyFunction場合、次のコード行は有効です。

new myClass().myFunction();

.が の前に評価される場合new、この行はどのように実行できますか? 言い換えれば、なぜ括弧が必要ないのでしょうか?

(new myClass()).myFunction();

私の推測では、()優先順位は と共有され.ているため、myClass()が最初に評価されるため、コンパイラはnewキーワードを評価する前に、myClassパラメーターがゼロのコンストラクターが呼び出されていることを認識しています。ただし、これは最初の行が と同一であることを暗示しているように見えますが、そうnew (myClass().myFunction());ではありません

4

2 に答える 2