是否有一个Java等同于Javascript的声明?

Ian*_*ell 5 javascript java with-statement


是否有类似的方式在Java中声明一个with语句(如在Javascript中),或者是否存在结构性原因导致无法实现这一点?


例如,这个Javascript:

with(obj)
{
  getHomeworkAverage();
  getTestAverage();
  getAttendance();
}
Run Code Online (Sandbox Code Playgroud)

......很好,也很容易.但是,似乎每次在Java中必须将方法调用链接到它们的对象,没有这样的优雅快捷方式:

obj.getHomeworkAverage();
obj.getTestAverage();
obj.getAttendance();
Run Code Online (Sandbox Code Playgroud)

这是非常多余的,当有许多方法可以调用时尤其令人恼火.


  • 那么,有没有类似的方法在Java中声明一个with语句
  • 如果这是没有可能的,什么是它的原因可能在Javascript相比,能够在Java中?

Pat*_*han 10

没有直接等同于"with".

如果方法是实例方法,则可以为目标对象引用提供在块中使用的短标识符:

{
  Student s = student;
  s.getHomeworkAverage();
  s.getTestAverage();
  s.getAttendance();
}
Run Code Online (Sandbox Code Playgroud)

如果方法是静态的,则可以使用"import static":

import static java.lang.Math.*;

public class Test {
  public static void main(String[] args) {
    System.out.println(sqrt(2));
  }
}
Run Code Online (Sandbox Code Playgroud)

  • +1导入静态,这可能是与`with`最接近的相似度. (3认同)
  • @IanCampbell我认为反对过度使用的相同警告应该适用于支持它的语言中的"with". (2认同)

Cod*_*odo 8

没有,有没有语句或Java中的一个类似的结构.

  • +1这是一个完全正确,直截了当的答案. (6认同)

Kar*_*k T 6

如果的类obj在您的控制之下,则可以提供Fluent接口,基本上可以this在每个函数中返回。这将使您可以像这样链接方法调用-

obj.getHomeworkAverage().getTestAverage().getAttendance();