Java で内部クラスから外部クラスの関数を明示的に呼ぶときはどう書くのか教えてください。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答4件)

id:namakoIsland No.1

回答回数319ベストアンサー獲得回数0

ポイント5pt

親クラスを呼び出す方法ということでよろしいでしょうか?

id:OkadaHiroshi

そうではなくて内部(匿名、非匿名にかかわらず)クラスと外部(包んでいるクラス)のメソッドが重複してしまったとき、外部クラスのメソッドを内部クラスから呼び出す方法を知りたいのですが。

2005/07/24 20:22:35
id:HackySS No.2

回答回数13ベストアンサー獲得回数0

ポイント20pt

http://www.geocities.jp/healthyhus/txt/java/j09innerclass.html

ひとりで喫むjavaコーヒー(innerclass)

URLのページに直接このことが書いてあるわけではないのですが……

例えば私はこのように書いたことがあります。

public class SampleOuterClass extends BlurBlur {

private SampleOuterClass selfSampleOuterClass = this;


void methodToCall(){

// ……色々と略……

}

// ……色々と略……

class SampleInnerClass{

void dummyMethod(){

selfSampleOuterClass.methodToCall(); // ***

}

}

}


みそは、内部クラスからアクセスする外部クラスのメンバ(ここでは selfSampleOuterClass)を用意して、

明示化する、という点です。

そのメンバは、実は外部クラスのインスタンス自身を指しているわけです。


私はこのやり方が好きです。

内部クラスが入ってくると、

自分自身を引数に渡したい、なんてときにも、

this を使って頭がこんがらがるより、

こいつで解決すれば、気分が良いこともあります(笑

id:OkadaHiroshi

ありがとうございます。

実はどうしても方法が見つからなかったので仮にそうしています。(^^;;

余計な変数を宣言しなくてはならなくてスマートでないので、もっと良い方法が無いのかと思っています。

やはりこの方法しかないのでしょうか?

2005/07/24 21:10:32
id:lupu No.3

回答回数214ベストアンサー獲得回数0

ポイント100pt

2番目のサンプルコードを見てください。


内部クラスからは、

 outsideClass.this.foo();

というやり方で出来るようです。

id:OkadaHiroshi

おお、この回答をまっていました。

ありがとうございます。

2005/07/24 21:13:31
id:quintia No.4

回答回数562ベストアンサー獲得回数71

ポイント50pt

class Outer {

void foo(){

}


class Inner {

void foo() {

}


//ここから下が回答です。

void bar() {

foo(); //Inner#foo()のこと

Outer.this.foo(); //Outer#fooのこと

}

}


}

Outer.thisの形式は覚えておくと色々使えます。

id:OkadaHiroshi

ありがとうございます。

2005/07/24 21:13:46

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません