【发布时间】:2013-09-03 14:34:56
【问题描述】:
了解匿名类并从 Oracle 获得。我希望有人可以告诉我如果我不使用匿名类会是什么样子。我将如何使用新课程来做到这一点?
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class HelloWorld extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
primaryStage.setTitle("Hello World!");
Button btn = new Button();
btn.setText("Say 'Hello World'");
btn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
System.out.println("Hello World!");
}
});
StackPane root = new StackPane();
root.getChildren().add(btn);
primaryStage.setScene(new Scene(root, 300, 250));
primaryStage.show();
}
}
在此示例中,方法调用 btn.setOnAction 指定了当您选择说“Hello World”按钮时会发生什么。此方法需要 EventHandler 类型的对象。 EventHandler 接口只包含一个方法,handle。 该示例没有使用新类实现此方法,而是使用匿名类表达式。请注意,此表达式是传递给 btn.setOnAction 方法的参数。
来源:http://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html
【问题讨论】:
-
考虑一下普通顶级类和匿名类的区别和相似之处。
-
@LuiggiMendoza 我不知道该怎么办。
-
真的……只是新建一个类实现EventHandler
,没看到问题抱歉 -
在我的 IDE 中,我点击
F6进行移动,它建议了一个名称。不需要比这更难。 -
“非匿名类”到底是什么意思?最接近匿名类的是命名本地类(local = inside a method);将其转换为所需的努力最少。然后,您还可以有一个非本地内部类,即一个是内部类但不在方法内部的类。转换到那个需要稍微多一点的努力。最后,你有一个静态的内部类或成熟的顶级类;转换到那个需要最大的努力。
标签: java anonymous-class