在基于面向对象的编程语言如java
中,我们可以使用objectName.methodName()调用对象的方法 -
aStudent.getName().equals(anotherStudent.getName());
这里要实现equals()
方法,我必须使用两个点(。)。在某些情况下,可能有超过2个点,如 -
objectName.methodName1().methodName2().methodName3().methodName4()
我的问题是 - 这种方法调用水平有限制吗?
答案 0 :(得分:4)
自写作以来没有技术限制:
result = foo.bar().baz();
相当于写作
bar = foo.bar();
result = bar.baz();
但是,通常存在设计限制:如果您正在访问某个对象的孩子的孩子的孩子,则可能违反了Law of Demeter(和this文章如果你有兴趣,可以进一步澄清事情。)
答案 1 :(得分:2)
只要该方法返回一个对象,就可以调用该对象的任何公共方法,因此没有任何限制(没有你应该重要的......总是有一个限制)。
请注意,该方法可能没有限制,但根本不建议,因为它更难以阅读,并且更难以在其中一个对象中验证为空。