Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java与VB的等价物,带…结束于_Java - Fatal编程技术网

Java与VB的等价物,带…结束于

Java与VB的等价物,带…结束于,java,Java,可能重复: 在Visual Basic中,我可以执行以下操作: With myObject .myMethod1() .myMethod2() .myMethod3() End With 我想知道Java中是否有与此类似的语言?不太可能。如果您需要对一个对象执行一系列操作,那么将这些操作封装在函数中并将其放入该对象的类中可能更有意义 public void doStuff() { myMethod1(); myMethod2(); myMeth

可能重复:

在Visual Basic中,我可以执行以下操作:

With myObject
    .myMethod1()
    .myMethod2()
    .myMethod3()
End With

我想知道Java中是否有与此类似的语言?

不太可能。如果您需要对一个对象执行一系列操作,那么将这些操作封装在函数中并将其放入该对象的类中可能更有意义

public void doStuff() {
    myMethod1();
    myMethod2();
    myMethod3();
}

...

myObject.doStuff();
您可能还想看看之前发布的这个问题:

不太可能,但你可以这样做

{
  MyClass m = reallyLongExpressionReturningAnObject();
  m.myMethod1();
  m.myMethod2();
  m.myMethod3();
}
我不知道Visual Basic,但某些语言中具有类似语法的功能除了保存以多次键入表达式之外还有一个额外的优点:它将在块的末尾自动关闭对象,即使在块中发生异常时也是如此

有人讨论过如何将其添加到Java中,它看起来像是在JDK 7中。不过,作为try语句的扩展,语法会有点不同。然后你就可以写了

try (BufferedReader in = new BufferedReader(new FileReader(...))) {
    String line;
    while((line = in.readLine()) != null) {
       list.add(line);
    }
}
。。。读卡器(以及它所包装的所有流)将在读取后(或在异常情况下)自动关闭

这适用于实现(新)接口的所有对象。如果在块本身中引发异常,并且在清理过程中发生另一个异常,则会抑制该另一个异常,并使用
addsupprested(…)
将其附加到原始异常


但是,您仍然需要在块内按(变量)名称调用对象。

没有与
with
语句完全等效的语句。在VB上下文中,它是语法糖。您可以创建一个临时引用,指向您想“使用”的任何对象

此外,语法是

With myObject
    .myMethod1()
    .myMethod2()
    .myMethod3()
End With
这可能相当于

... m = myObject; 
m.myMethod1(); 
...
可以通过使用额外的大括号包装代码来创建对象

Test myObject;

myObject=new Test()
{
  {
    myMethod1();
    myMethod2();
    myMethod3();
   }
};

抱歉重复发布问题。:)我通常会将它们封装在一个方法中,但我想看看是否可以将“名称空间”设置为对象。谢谢