Java 是否可以将void作为参数传递?
我正在用Javafx编写一个控制台,在这个控制台中我使用超链接。由于超链接可以做的不仅仅是启动一个URL,我想知道您是否可以传递一个空白让它们运行 这是我的超链接启动URL的示例: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>() {
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!");
}
}
...