【问题标题】:Possible to transfer void as parameter?可以将 void 作为参数传递吗?
【发布时间】:2016-12-17 06:04:42
【问题描述】:

我正在用 Javafx 编写一个控制台,在这个控制台中我使用了超链接。由于超链接不仅仅是启动一个 URL,我想知道你是否可以传递一个 void 让它们运行。

这是我启动 URL 的超链接示例:

public void writeHyper(String name, String url) {
    Hyperlink link = new Hyperlink(name);
    link.setOnAction(new EventHandler<ActionEvent>() {
        @Override
        public void handle(ActionEvent e) {
            try {
                Desktop.getDesktop().browse(new URI(url));
            } catch (IOException | URISyntaxException e1) {
                e1.printStackTrace();
            }
        }
    });
    t.getChildren().add(link);
}

是否有可能按照这些思路做一些事情:

public void writeVoid(String name, Void v) {
    Hyperlink link = new Hyperlink(name);
    link.setOnAction(new EventHandler<ActionEvent>() {
        @Override
        public void handle(ActionEvent e) {
             // runs the void
        }
    });
    t.getChildren().add(link);
}

【问题讨论】:

标签: java hyperlink parameters void


【解决方案1】:

如果您需要运行函数,您可以使用lambda(仅限Java 8+)或@JonnyHenly 指出的Runnable。 你的代码就变成了:

public void writeVoid(String name, Runnable r) {
Hyperlink link = new Hyperlink(name);
link.setOnAction(new EventHandler<ActionEvent>() {
    @Override
    public void handle(ActionEvent e) {
        r.run(); // runs the void
    }
});
t.getChildren().add(link);

...
writeVoid(name, new Runnable() {
    @Override
    public void run() {
        System.out.println("Running!");
    }
}
...

【讨论】:

  • 哦,没想到,这就解决了。谢谢老兄。
猜你喜欢
  • 2019-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-19
  • 2021-11-19
  • 2015-12-29
  • 1970-01-01
  • 2018-10-11
相关资源
最近更新 更多