将此功能添加到Java有意义吗:默认成员集合?

将此功能添加到Java有意义吗:默认成员集合?,java,Java,我知道如何迭代作为类成员的集合。当前语法为 for (Foo f: bar.getFoos()){... 我只是提议 for (Foo f: bar){... 如果Bar类中只有一个Foo集合,getter将被调用,或者如果没有getter,则该集合将被直接访问(如果是公共的)。我想这不是一个好主意,因为正如JonK所建议的,您可以向类中添加相同类型的第二个集合,并且引用该集合的每一段代码都会以这种方式停止编译,或者引用错误的集合(如果它引用了第一个实例) 编辑:我必须修改这个。如果添加了

我知道如何迭代作为类成员的集合。当前语法为

for (Foo f: bar.getFoos()){...
我只是提议

 for (Foo f: bar){...

如果Bar类中只有一个Foo集合,getter将被调用,或者如果没有getter,则该集合将被直接访问(如果是公共的)。

我想这不是一个好主意,因为正如JonK所建议的,您可以向类中添加相同类型的第二个集合,并且引用该集合的每一段代码都会以这种方式停止编译,或者引用错误的集合(如果它引用了第一个实例)


编辑:我必须修改这个。如果添加了第二个集合,代码仍将引用第一个集合。我认为这实际上可能是一种功能,就像使用依赖于单一方法的功能接口一样。

我不认为这会产生对功能的需求。如果您想迭代
gettin
Foo
s,只需让
Bar
实现
Iterable
并返回适当的
迭代器
。不要忘记提供适当的
.stream()
.parallelStream()
的功能可能也会变得很方便。

…六个月后,另一个人来了,向该类添加了第二个集合,突然一堆东西停止了编译。如果
Bar
实现
Iterable
,这很好。如果它有
Foos
Bazs
Frobnitzes
,没有
Bar
可以实现
Iterable
接口,并且让
iterator
-方法返回集合的迭代器。“如果Bar类中只有一个Foo集合,就可以理解它了。”一旦foo中需要另一个集合访问器,代码就会中断……除了可能出现的问题之外,它的优势到底是什么?不必编写.getFoos()?当然,懒惰是编程的一个优点,但是。。。也就是说,我喜欢这个问题,它让我们思考基本语法,即使我们反对建议的功能。事实上:让它“理解Bar类中只有一个Foo集合……”的最好方法是让该类的用户显式访问该集合。