【发布时间】:2012-05-13 19:23:21
【问题描述】:
序言:我知道使用列表或其他集合来返回结果,但是我必须通过列表来提取结果:请参阅第二个示例
Preamble-2:我正在寻找“Java 不支持此功能......”之外的答案
我正在寻找一种从 Java 方法调用中返回多个对象的便捷方式。
有点像 PHP:
list ($obj1, $obj2, ...) foobar();
我真的厌倦了在参数中传递持有者对象,例如:
class Holder {
int value;
}
Holder h1=new Holder();
Holder h2=new Holder();
然后:
o.foobar(h1,h2);
...如果有人想出一个优雅的方法来解决这个问题,我会非常感兴趣。
使用列表
List<String> = foobar();
这样做有两个缺点:
我必须先在房子的被叫方打包列表:
// this is on the callee side of the house
ArrayList<String> result = new ArrayList<String>
result.add("foo");
result.add("bar");
然后在调用方我必须提取结果:
// This is on the caller side
List<String> result = foobar();
String result1 = result.get(0);
String result2 = result.get(1); // this is not as elegant as the PHP equivalent
此外,假设我想返回不同类型的对象,比如 String、Integer,我将不得不返回一个对象列表,然后强制转换每个对象......不漂亮
谢谢。
【问题讨论】:
-
我只是返回一个列表
-
返回List有什么问题?
-
已编辑。 Java 的“老手”不会问这个问题,而且原来的问题有点刻薄。
-
@Adam-Liss -- 也许比你还老手 :-( ... 幼稚的回应!!!
-
如果不支持,则不支持。就那么简单。您可以使用具有众所周知的缺点的数组或其他集合 - 特别是使用不方便的样板来放置列表。改用 scala,你会得到元组。当然,您可以使用 Java 中的元组,但不能以那种优雅的方式。
标签: java return-value