自执行Java方法

在JavaScript中,可以编写一个这样的自执行函数:

(function foo() { console.log("bar"); }()); 

我希望用Java做到这一点。 例如:

 // This code does not work obviously public static void main(String[] args) { (foo() { System.out.println("bar"); }()); } 

有这样的事吗?

那个javascript并没有真正创建一个“自动执行”的function。 它定义了一个函数,然后立即执行它。

Java不允许您定义独立函数,因此您无法在Java中执行此操作。 但是,您可以声明一个匿名类并立即执行其中一个方法:

 new Runnable() { @Override public void run() { System.out.println("hello"); } }.run(); 

这有时是用新线程完成的。 就像是:

 new Thread(new Runnable() { // override Runnable.run }).start(); 

(尽管在很多情况下,您需要做更好的线程管理 – 例如,将runnable提交给执行者服务。)

正如其他人所说,在Java中没有太多理由这样做,因为在JavaScript中这样做的原因不是Java中的问题。 但你可以在Java 8中做到这一点:

 ((Runnable)(() -> System.out.println("Hello, world"))).run(); 

这本质上是@ yshavit在Java 7中的回答。