人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

●質問者: hiroshi
●カテゴリ:コンピュータ
✍キーワード:Java クラス 関数
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● namakoIsland
●5ポイント

http://www.tohoho-web.com/java/class.htm#super

とほほのJava入門

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

◎質問者からの返答

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


2 ● HackySS
●20ポイント

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 を使って頭がこんがらがるより、

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

◎質問者からの返答

ありがとうございます。

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

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

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


3 ● lupu
●100ポイント

http://wisdom.sakura.ne.jp/programming/java/java47.html

内部クラス2

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


内部クラスからは、

outsideClass.this.foo();

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

◎質問者からの返答

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

ありがとうございます。


4 ● quintia
●50ポイント

http://ask.jp/

Ask.jp

class Outer {

void foo(){

}


class Inner {

void foo() {

}


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

void bar() {

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

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

}

}


}

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

◎質問者からの返答

ありがとうございます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ