【发布时间】:2014-01-19 18:36:05
【问题描述】:
这是我想知道很久的事情。
是否可以传递一个对象但首先在同一行中对该对象调用一个 void 方法?这很难解释,但我举个例子:
我正在使用来自第三方 API 的 Vector 对象,它只包含 3 个坐标,我将它传递给一个组成的 setLocation(Vector) 方法;但首先我想将 3 添加到由 Vector#addY(3f); 完成的 Vector 的 Y 值,那么是否可以在同一行上执行此操作?
setLocation(new Vector(0f,4f,0f).addY(3));
我认为这应该可以解释我的意思。
【问题讨论】:
-
不,除非
addY方法返回一个新的Vector对象,这不是你的情况 -
System.out.println(new ArrayList().add("5"));打印 true 因为 add 返回布尔值。所以,只有当整个方法链返回您的对象时,您才能调用方法,否则,这没有任何意义..
-
一个单独的问题是您为什么要这样做?将多个操作推送到一行是降低代码清晰度的最佳方法
-
好的,谢谢!我只是想知道这是否可能。
-
这种设置就是所谓的“流利的 API”。不幸的是,该 setter 中的 JavaBeans 标准返回
void而不是this,所以您通常不能。