Is there a Java equivalent to Javascript's with statement?
是否有类似的方式在Java中声明一个with语句(如在Javascript中),或者是否存在结构性原因导致无法实现这一点?
例如,这个Javascript:
1 2 3 4 5 6 | with(obj) { getHomeworkAverage(); getTestAverage(); getAttendance(); } |
......很好,也很容易。 但是,似乎每次在Java中都必须将方法调用链接到它们的对象,没有这样的优雅快捷方式:
1 2 3 | obj.getHomeworkAverage(); obj.getTestAverage(); obj.getAttendance(); |
这是非常多余的,当有许多方法可以调用时尤其令人恼火。
- 那么,有没有类似的方法在Java中声明一个with语句?
- 如果这是不可能的,那么与Javascript相比,Javascript中可能的原因是什么?
没有直接等同于"with"。
如果方法是实例方法,则可以为目标对象引用提供在块中使用的短标识符:
1 2 3 4 5 6 | { Student s = student; s.getHomeworkAverage(); s.getTestAverage(); s.getAttendance(); } |
如果方法是静态的,则可以使用"import static":
1 2 3 4 5 6 7 |
不,Java中没有声明或类似的构造。
如果
有一个原因你不能用Java做到这一点。也许最明显的是函数不是Java中的第一类对象,因此您不能简单地使用引用该函数的名称 - 它必须位于类之下。正如Karthik T所提到的,缩短它的方式可能只是创造性地使用空白:
1 2 3 4 | obj .meth1() .meth2() .meth3() |
每个方法返回对象的位置。
有关First-Class Functions的更多信息:wikipedia
So, is there any similar way to declare a with-statement in Java?
不,那里没有。最接近的是Patricia Shanahan的回答中描述的
And if this is not possible, what are the reasons that it is possible in Javascript as compared to not possible in Java?
它们是两种完全不同的语言,具有不同的特征/优点/缺点。类比:锤子和螺丝刀都是工具,但它们以不同的方式使用。