为了账号安全,请及时绑定邮箱和手机立即绑定

Java中的WITH语句

Java中的WITH语句

哔哔one 2019-12-04 14:44:44
在VB.NET中,使用WITH命令可以省略对象名称,而仅访问所需的方法和属性。例如:With foo   .bar()   .reset(true)   myVar = .getName()End WithJava中是否有这样的语法?谢谢!
查看完整描述

3 回答

?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

在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。


但是,想要这样做往往表示该对象没有足够丰富的行为。尝试将其重构为被调用的类。也许有不止一个班试图脱身。


查看完整回答
反对 回复 2019-12-04
?
繁星coding

TA贡献1797条经验 获得超4个赞

使用Java 8 lambda可以使您非常接近,但缺点是无法修改局部变量。


声明此方法:


static <T> void with(T obj, Consumer<T> 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

});

使用匿名类也可以这样做,但不是很干净。


查看完整回答
反对 回复 2019-12-04
  • 3 回答
  • 0 关注
  • 1926 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信