是否有类似的方法在Java中声明 with-statement (如在Javascript中),或者是否存在结构性原因导致这种情况无法实现?
with(obj)
{
getHomeworkAverage();
getTestAverage();
getAttendance();
}
......很好,也很容易。但是,似乎方法调用将链接到Java中每个时间的对象,没有这样优雅的快捷方式:
obj.getHomeworkAverage();
obj.getTestAverage();
obj.getAttendance();
这是非常多余的,当有许多方法可以调用时尤其令人恼火。
答案 0 :(得分:9)
没有直接相当于“with”。
如果方法是实例方法,则可以为目标对象引用提供一个短标识符,以便在块中使用:
{
Student s = student;
s.getHomeworkAverage();
s.getTestAverage();
s.getAttendance();
}
如果方法是静态的,您可以使用“import static”:
import static java.lang.Math.*;
public class Test {
public static void main(String[] args) {
System.out.println(sqrt(2));
}
}
答案 1 :(得分:7)
不,没有带有语句的或Java中的类似构造。
答案 2 :(得分:5)
如果obj
的班级在您的控制之下,您可以提供Fluent interface,基本上每个函数都会返回this
。这可以让你像这样链接方法调用 -
obj.getHomeworkAverage().getTestAverage().getAttendance();
答案 3 :(得分:4)
有一个原因,你不能用Java做到这一点。也许最明显的是函数不是Java中的第一类对象,因此您不能简单地使用引用该函数的名称 - 它必须位于类之下。正如Karthik T所提到的,缩短它的方式可能只是创造性地使用空白:
obj
.meth1()
.meth2()
.meth3()
其中每个方法返回对象。
有关头等功能的更多信息:wikipedia
答案 4 :(得分:1)
那么,有没有类似的方法在Java中声明一个with语句?
不,没有。最接近的是Patricia Shanahan回答中描述的import static
机制。
如果这是不可能的,那么在Javascript中可能的原因与Java中不可能的原因相同?
它们是两种完全不同的语言,具有不同的特征/优点/缺点。类比:锤子和螺丝刀都是工具,但它们以不同的方式使用。