Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否可以将void作为参数传递?_Java_Hyperlink_Parameters_Void - Fatal编程技术网

Java 是否可以将void作为参数传递?

Java 是否可以将void作为参数传递?,java,hyperlink,parameters,void,Java,Hyperlink,Parameters,Void,我正在用Javafx编写一个控制台,在这个控制台中我使用超链接。由于超链接可以做的不仅仅是启动一个URL,我想知道您是否可以传递一个空白让它们运行 这是我的超链接启动URL的示例: public void writeHyper(String name, String url) { Hyperlink link = new Hyperlink(name); link.setOnAction(new EventHandler<ActionEvent>() {

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

这是我的超链接启动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 writeHyper(字符串名称、字符串url){
超级链接=新的超级链接(名称);
setOnAction(新的EventHandler(){
@凌驾
公共无效句柄(ActionEvent e){
试一试{
getDesktop().browse(新URI(url));
}捕获(IOException | URISyntaxException e1){
e1.printStackTrace();
}
}
});
t、 getChildren().add(链接);
}
是否有可能按照以下思路做一些事情:

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);
}
public void writeVoid(字符串名,void v){
超级链接=新的超级链接(名称);
setOnAction(新的EventHandler(){
@凌驾
公共无效句柄(ActionEvent e){
//填补空白
}
});
t、 getChildren().add(链接);
}

如果您需要一个函数来运行,您可以使用a(仅限Java 8+)或@JonnyHenly指出的a。 然后,您的代码变成:

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);

如果您使用的是Java 8,如果您使用的是我链接的duplicate中的可能的副本--“因为
Void
类无法实例化,所以您可以传递给带有
Void
类型参数的方法的唯一值,例如
handle(Void e)
,是
null
“Oh的可能副本,我甚至没有想到这一点,这就解决了问题。谢谢你,伙计。
...
writeVoid(name, new Runnable() {
    @Override
    public void run() {
        System.out.println("Running!");
    }
}
...