在JavaScript中,可以编写一个这样的自执行函数:
(function foo() {
console.log("bar");
}());
我希望用Java做到这一点。例如:
// This code does not work obviously
public static void main(String[] args) {
(foo() {
System.out.println("bar");
}());
}
有这样的事吗?
答案 0 :(得分:6)
正如其他人所说,在Java中没有太多理由这样做,因为在JavaScript中这样做的原因不是Java中的问题。但你可以在Java 8中做到这一点:
((Runnable)(() -> System.out.println("Hello, world"))).run();
本质上是@ yshavit在Java 7中的回答。
答案 1 :(得分:4)
javascript并没有真正创造出一个自我执行的"功能。它定义了一个函数,然后立即执行它。
Java不允许您定义独立函数,因此您无法在Java中执行此操作。但是,您可以声明一个匿名类并立即执行其中一个方法:
new Runnable() {
@Override
public void run() {
System.out.println("hello");
}
}.run();
这有时是通过新线程完成的。类似的东西:
new Thread(new Runnable() {
// override Runnable.run
}).start();
(虽然在很多情况下,你会想要做更好的线程管理 - 例如,将runnable提交给执行者服务。)
答案 2 :(得分:0)
您可以创建辅助方法(例如run
和get
)来执行您的自定义功能。
如果函数不返回任何内容(副作用),则使用run
,否则使用get
import java.util.function.Supplier;
public interface MyApp {
static void run(Runnable supp) {
supp.run();
}
static <R> R get(Supplier<R> supp) {
return supp.get();
}
static void test() {
run(() -> System.out.println("bar"));
var v = get(() -> "Hello");
}
}