1

Javaは初めてです。このコードについて不明な点:

ParseQuery query = new ParseQuery("GameScore");
query.getInBackground("xWMyZ4YEGZ", new GetCallback() {
  public void done(ParseObject object, ParseException e) {
    if (e == null) {
      // object will be your game score
    } else {
      // something went wrong
    }
  }
});

を使用new GetCallback() {....}すると、GetCallbackクラスのインスタンスをインスタンス化するのですか、それともGetcallbackクラスのサブクラスを定義するのか、あるいはその両方ですか?

これは、C / Objective-CおよびRubyのブロックで無名関数を実行するJavaの方法ですか?

4

3 に答える 3

7

それは両方をやっています。匿名の内部クラスを宣言し(コンパイルされた出力に対応する.classファイルが表示されます)、その新しいインスタンスを作成します。

Javaには、匿名関数だけを作成する方法はありません(Java 7の時点で)-これは、可能な限り近いものです。

于 2012-09-15T06:24:39.150 に答える
1

これは匿名クラスであり、実際にはクラスとインスタンスの両方を作成しています。詳細はこちら

于 2012-09-15T06:24:48.733 に答える
1

これがあなたがしていることです:

  • 匿名の内部クラスを宣言しています
  • あなたはそれをインスタンス化しています
  • 最後に、メソッドをオーバーライドpublic void done(ParseObject object, ParseException e)し、独自の定義を提供しています。

このような匿名の内部クラスを持つことの利点は、オーバーロードされたメソッドなどのクラスの実際の機能に特定の調整を加えるオブジェクトのインスタンスを使用する場合の有用性と関係があります(あなたの場合のように)。クラスをサブクラス化します。

于 2012-09-15T06:26:50.777 に答える