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 类的子类或两者兼而有之?

这是 Java 在 C/Objective-C 和 Ruby 块中执行匿名函数的方式吗?

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 回答