我只想知道您对将所有 Collections 函数输出更改为 Iterable 类型的看法。
在我看来,这可能是当今 Java 中最常见的代码,每个人在 99% 的时间里总是返回一个 List/Set/Map,但不应该是返回类似
的标准 public final Iterable<String> myMethod() {
return new Iterable<String>() {
@Override
public Iterator<String> iterator() {return myVar.getColl();}
};
}
这很糟糕吗?你知道所有的 DAO 类,这些东西就像
Iterable<String> getName(){}
Iterable<Integer> getNums(){}
Iterable<String> getStuff(){}
代替
List<String> getName(){}
List<Integer> getNums(){}
Set<String> getStuff(){}
毕竟,99% 的时候你会在 for 循环中使用它...
你怎么看?
最佳答案
这将是一个非常糟糕的计划。
我不会说 90% 的时间您只是在 for 循环中使用它。可能是 40-50%。其余时间,您需要更多信息:size
、contains
或 get(int)
。
此外,返回类型本身就是一种文档。返回 Set
保证元素是唯一的。返回一个 List
说明元素的顺序一致。
我不建议返回特定的集合实现,如 HashSet
或 ArrayList
,但我通常更愿意返回 Set
或 List
而不是 Collection
或 Iterable
,如果该选项可用的话。
关于java - Iterable vs Iterator 作为返回行为(最佳实践?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10581092/