Java 中的 WITH 语句

2022-09-01 06:31:22

在 VB.NET 有 WITH 命令,允许您省略对象名称并仅访问所需的方法和属性。例如:

With foo
   .bar()
   .reset(true)
   myVar = .getName()
End With

Java中是否有这样的语法?

谢谢!


答案 1

不。当表达式过长时,您可以做的最好的方法是将其分配给具有短名称的局部变量,并用于创建作用域:{...}

{
   TypeOfFoo it = foo; // foo could be any lengthy expression
   it.bar();
   it.reset(true);
   myvar = it.getName();
}

答案 2

也许在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();

其中 和 方法返回 。barresetthis

但是,想要这样做往往表明对象没有足够丰富的行为。尝试重构到被调用的类中。也许不止一个班级试图走出去。