API java 5 及更高版本:我应该返回数组还是集合?
本着最佳实践的精神:始终返回 ____,从不返回 ____,在即将从 JDK1.4.2 迁移到 JDK5 等时,我遇到了类似的问题。(是的,我知道,JDK1.4.2是EOL! ;-))。
对于返回集合的函数(不是简单的属性集合),我总是更喜欢(在JDK1.4.2中)返回数组而不是泛型列表,因为:
- 它强制执行返回类型(而不是对象列表,在静态上类型安全得多 - 如在“编译” - 级别)
MyObject[]
- 它向返回的集合建议一个“只读”字符(向集合中添加元素会更复杂,即使这不像c#中的“只读”关键字那么严格)。这与说它是“不可变的”不同,因为数组中的引用仍然可以修改...
当然,我总是创建这个返回的数组(我不公开任何“内部”数组)
现在,在JDK5和更多中,如果我愿意,我可以使用它。List<MyObject>
在java5中编码时,选择返回MyObject[]
而不是List或Colleger<MyObject>
的好理由是什么?
奖金,如果使用,是否可以:Collection<MyObject>
- 对返回的集合强制实施只读属性 ?(否或可能)
add()
remove()
- 对返回的集合强制实施不可变方面 ?(即使该集合的引用也无法修改)
PS:JavaGenericFAQ没有这个。