[解決済み】内側のクラス・オブジェクトから外側のクラス・オブジェクトを取得する
2022-04-29 23:06:27
質問
次のようなコードがあります。内部クラス・オブジェクトを作成した外部クラス・オブジェクトを取得したい。
inner
. どうすればいいのでしょうか?
public class OuterClass {
public class InnerClass {
private String name = "Peakit";
}
public static void main(String[] args) {
OuterClass outer = new OuterClass();
InnerClass inner = outer.new InnerClass();
// How to get the same outer object which created the inner object back?
OuterClass anotherOuter = ?? ;
if(anotherOuter == outer) {
System.out.println("Was able to reach out to the outer object via inner !!");
} else {
System.out.println("No luck :-( ");
}
}
}
EDITです。 さて、何人かの人が、メソッドを追加することによって内部クラスを修正することを提案しました。
public OuterClass outer() {
return OuterClass.this;
}
しかし、インナークラスを変更するコントロールがない場合はどうすればいいのでしょうか?その場合、(念のため)インナークラスのオブジェクトから対応するアウタークラスのオブジェクトを取得する他の方法があるのでしょうか?
どのように解決するのですか?
インナークラス自体の中で
OuterClass.this
. この式は、辞書的に囲まれているインスタンスを参照することができ、JLSでは次のように記述されています。
修飾語
this
.
しない 思う インナークラスのコードの外からインスタンスを取得する方法はないんだけどね。もちろん、独自のプロパティを導入することは可能です。
public OuterClass getOuter() {
return OuterClass.this;
}
EDIT: 実験してみると、外側のクラスへの参照を持つフィールドは、少なくとも私が使用しているJDKでは、パッケージレベルのアクセス権を持っているようです。
EDIT: 使用されている名前 (
this$0
)
は
はJavaで実際に有効ですが
JLS
は、その使用を控えている。
その
$
文字は、以下の場合にのみ使用してください。 機械的に生成されたソースコード、または まれに、既存の名前にアクセスするために レガシーシステム
関連
-
[解決済み] Jdbctemplate の文字列に対するクエリです。EmptyResultDataAccessException: 不正な結果サイズ:期待値1、実際0
-
[解決済み] 要素 'beans' の宣言が見つかりません。
-
[解決済み] publicId と systemId の間に空白が必要です。
-
[解決済み] javaでメソッドを呼び出すプログラムのエラー修正
-
[解決済み] JavaFX 同じパッケージ内なのに「場所が必要です。
-
[解決済み] Spring ApplicationContext - リソースリーク: 'context' が閉じられない
-
[解決済み] プライベートメソッド、フィールド、インナークラスを持つクラスをテストするにはどうすればよいですか?
-
[解決済み] Java内部クラスと静的ネストされたクラス
-
[解決済み] Javaクラスにおけるcanonical name、simple name、class nameの違いは何ですか?
-
[解決済み] 匿名)内部クラスを使用することがリークセーフとなるのは、具体的にどのような場合ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] トークンのシンタックスエラー、これらのトークンを削除してください [closed].
-
[解決済み] 環境変数JAVA_OPTSの使い方を教えてください。
-
[解決済み] java.lang.IncompatibleClassChangeError: Mongo クラスを実装しています。
-
[解決済み] プロトコルハンドラの初期化に失敗しました。
-
[解決済み] android.support.v4.app.FragmentActivity' で 'TAG' がプライベートアクセスされている。
-
[解決済み] Eclipse- Dynamic Web Module 3.0 で新しいプロジェクトを作成するときに Java 1.6 以降が必要なエラーが発生する。
-
[解決済み] アニメーションGIFの表示
-
[解決済み] javaでメソッドを呼び出すプログラムのエラー修正
-
[解決済み】匿名内部クラスから外部クラスのキーワード【重複あり
-
[解決済み] 内部クラスから外部クラスの関数を呼び出す[重複]。