Java中的WITH语句

在VB.NET中,使用WITH命令可以省略对象名称,而仅访问所需的方法和属性。例如:


With foo

   .bar()

   .reset(true)

   myVar = .getName()

End With

Java中是否有这样的语法?


谢谢!


哔哔one
浏览 1927回答 3
3回答

江户川乱折腾

在Java中,最接近这样做的方法可能是构造过程中的双花括号习惯用法。Foo foo = new Foo() {{    bar();    reset(true);    myVar = getName(); // Note though outer local variables must be final.}};另外,this可以将返回的方法链接在一起:myName =    foo        .bar()        .reset(true)        .getName();哪里bar和reset方法返回this。但是,想要这样做往往表示该对象没有足够丰富的行为。尝试将其重构为被调用的类。也许有不止一个班试图脱身。

繁星coding

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

相关分类

Java