38

Java プログラマーへの簡単な質問 - 直接可能かどうかはわかりません - 回避策を提示してください。

ネストされたクラス メンバーを初期化するために親変数にアクセスしたいのですが、それを行うための Java 構文がわかりません (可能な場合)。親IDで子IDを設定する方法。

public class Parent {
    final String id = "parent";

    class Child {
        // it is invalid since scope hide parent id?
        final String id = id;
    }
}

私が見つけた最良の解決策は非常に醜いです ここを参照してください:

public class Parent {
    final String id = "parent";

    // ugly clone
    String shadow = id;

    class Child {
        final String id = shadow;
    }
}

構文を教えてください - 表現方法がわかりません。

4

2 に答える 2

88

完全修飾名を使用してアクセスできます。

final String id = Parent.this.id;
于 2013-02-10T17:23:33.967 に答える
-6

String idの1つを変更するとどうなりますか。

public class Parent {
  final String id = "parent";

  class Child {
    // it is invalid since scope hide parent id?
    // Instead of using id use ID
    final String ID = id;
  }
}

このようにすると、意味をなさない文字列 id = id がなくなります。

于 2015-10-04T09:33:45.823 に答える