使用Java 8 lambda可以使您非常接近,但缺点是无法修改局部变量。
声明此方法:
static void with(T obj, Consumer c) {
c.accept(obj);
}
因此,您可以使用:
Window fooBarWindow = new Window(null);
String mcHammer = "Can't Touch This";
with(fooBarWindow, w -> {
w.setAlwaysOnTop(true);
w.setBackground(Color.yellow);
w.setLocation(300, 300);
w.setTitle(mcHammer); // can read local variables
//mcHammer = "Stop!"; // won't compile - can't modify local variables
});
使用匿名类也可以这样做,但不是很干净。