すべてのカテゴリ » インターネット・パソコン » 技術・プログラミング

質問

終了

Javascriptで

object.func1("abc",func2{alert("def")});

と書くと、func1の後にfunc2の処理をさせる事ができますよね。

同じ様な事をJavaでもできますか?

  • 質問者:じゃばじゃば
  • 質問日時:2009-01-09 23:17:32
  • 0

Javaの場合はインターフェイスを使う事で実現できます。

まずは、コールバック用のインターフェイス(CallBack.java)を作ります。
ここで、コールバック用のメソッドを定義しておきます。
// コールバック用のインターフェイス
public interface CallBack {
 // コールバック用のメソッド
 public void callBack();
}

次にメインクラス(MainClass.java)です。
CallBackのオブジェクトを生成して、サブクラスに渡します。
// メインクラス
public class MainClass {
 public static void main(String[] args) {
  // コールバック用のオブジェクト
  CallBack callBack = new CallBack(){
   // コールバックされるメソッド
   public void callBack() {
    System.out.println("def");
   }
  };
  SubClass sub = new SubClass();
  // サブクラスにコールバック用のオブジェクトを渡して、処理後に呼んでもらう。
  sub.doSomething("abc", callBack);
 }
}

最後にサブクラス(SubClass.java)です。
自身のメソッドを処理した後で、コールバックオブジェクトのメソッドを呼び出します。
// サブクラス
public class SubClass {
 // 自身の処理後に、コールバックオブジェクトのメソッドを呼ぶ。
 public void doSomething(String param, CallBack callBack) {
  System.out.println(param);
  // コールバック
  callBack.callBack();
 }
}

このように実装すれば、何らかの処理後にコールバックを行う事ができます。

  • 回答者:匿名希望 (質問から35分後)
  • 0
この回答の満足度
  
とても参考になり、非常に満足しました。回答ありがとうございました。

並び替え:

匿名希望さんの回答の通りですが、補足をすると、
JavaScriptでは関数(func)はオブジェクトです。そのため、関数をそのまま引数おとして渡すことができます。一方Javaではメソッドはオブジェクトまたはクラスに属するものです。そのため、メソッドだけを渡すということはできないので、メソッドを持っているオブジェクトを渡す必要があります。

この回答の満足度
  
やや参考になりました。回答ありがとうございました。
お礼コメント

ありがとうございます。
内容はすばらしいのですが、質問に対する回答にはなっていませんので、評価は低くさせていただきました。

関連する質問・相談

Sooda!からのお知らせ

一覧を見る