【发布时间】:2015-10-09 20:22:19
【问题描述】:
考虑这个类
class MyClass {
private MyData[] data;
public MyData[] getData() {
return data == null ? null : (MyData[]) data.clone();
}
这是造成问题
安全性 - 方法返回内部数组
直接暴露内部数组允许用户修改一些代码 这可能很关键。返回数组的副本更安全。
考虑到clone 不好,应该避免,我可以做些什么来使这段代码更好?
【问题讨论】:
-
只复制数组?
-
System.arraycopy或Arrays.copyOf都可以满足您的需求。 -
你想在这里实现什么?只读数组?否则只返回数据本身。
-
@RalphWiggum 将返回一个浅拷贝。小心点。
-
这看起来不是问题。并非所有警告都是问题,它们只是告诉您应该了解自己在做什么并接受您正在做的事情的后果。但不是问题。