相关疑难解决方法(0)

如何公开集合属性?

每次我创建一个具有集合属性的对象时,我都会以最好的方式来回去做?

  1. 带有getter的公共属性,它返回对私有变量的引用
  2. 显式get_ObjList和set_ObjList方法,每次返回并创建新的或克隆的对象
  3. 显式get_ObjList返回一个IEnumerator和一个带有IEnumerator的set_ObjList

如果集合是一个数组(即objList.Clone())而不是List,它会有所不同吗?

如果返回实际集合作为引用是如此糟糕,因为它创建依赖项,那么为什么返回任何属性作为引用?每当您将子对象作为引用公开时,除非父级具有属性更改事件,否则可以在父级"知道"的情况下更改该子对象的内部.是否有内存泄漏的风险?

并且,不要选项2和3打破序列化?这是一个catch 22还是你必须在有集合属性的时候实现自定义序列化?

通用的ReadOnlyCollection似乎是一般用途的一个很好的折衷方案.它包装IList并限制对它的访问.也许这有助于内存泄漏和序列化.然而,它仍然有枚举问题

也许它只是取决于.如果您不关心集合是否被修改,那么只需将它作为公共访问器公开在每个#1的私有变量上.如果您不希望其他程序修改集合,那么#2和/或#3会更好.

问题隐含的是为什么一种方法应该用于另一种方法,以及对安全性,内存,序列化等的影响是什么?

.net c# architecture

48
推荐指数
1
解决办法
2万
查看次数

Java 7 API设计最佳实践 - 返回Array或返回Collection

我知道在通用出来之前就会问这个问题.在Array强制执行返回类型的情况下,Array确实胜出了一些,它更加类型安全.

但是现在,使用最新的JDK 7,每次我设计这种类型的API时:

public String[] getElements(String type)
vs
public List<String> getElements(String type)
Run Code Online (Sandbox Code Playgroud)

我总是在努力想出一些很好的理由来回归一个阵列或者其他方式.在选择String []或List作为API的返回类型时,最佳做法是什么?或者它是马的课程.

我脑子里没有特殊情况,我更希望找到一个通用的利弊比较.

java collections

13
推荐指数
2
解决办法
5621
查看次数

遗留代码中的泛型

我们有相当多的代码只是跳转到Java 5.我们一直在那些针对Java 5版本发布的组件中使用泛型,但剩下的代码当然是充满原始的类型.我已经设置编译器为原始类型生成错误并开始手动清除它们,但是按照目前的速率,它需要长时间才能完成它(大约有2500个错误).这是Eclipse的有用的Infer Generic Type快速修复,它总是摆脱错误,但经常生成需要进一步工作的代码.

有没有更好的方法来处理这个?有没有比Eclipse更好的自动化工具?有没有办法将重构应用于所有出现而不是一个一个地进行重构?或者你只是忽略警告?

java migration generics legacy-code

9
推荐指数
1
解决办法
677
查看次数

标签 统计

java ×2

.net ×1

architecture ×1

c# ×1

collections ×1

generics ×1

legacy-code ×1

migration ×1