二重括弧なしで参照変数キャスティング

HPH:

二つのクラス以下の通り:

class A {}

class B extends A {
    int b;
}

次の演算子の優先順位テーブルに基づいて:http://www.cs.bilkent.edu.tr/~guvenir/courses/CS101/op_precedence.html

両方の演算子()とは、.同じ優先順位を持っており、彼らは右(結合性)に左から評価しました。

A a = new B();
assert (B)a.b == 0;

上記のコードはコンパイルおよび括弧演算子が(参照鋳造最初に評価される正常アサートしなければならないaタイプにしB、次いでキャスト参照のアクセス)bの値を返すメンバ変数0

なぜ、上記の文はそうではありませんか?

アンドレアス:

あなたは混乱している() 括弧をして優先度15に( type ) 単項型キャスト優先さ13インチ

. メンバーの選択の優先順位15では、そのタイプのキャストよりも高い(B)a.b手段(B) (a.b)あなたが記述する必要が理由です、((B) a).bあなたが望むものを手に入れます。

順位表の一部

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=199294&siteId=1