所以我有一个界面:
public interface
{
List<String> getList();
}
但是,我相信实施者可以返回一个不可修改的列表,如:
List<String> getList()
{
return Collections.unmodifiablelist(new ArrayList<String>());
}
是否有任何接口,或确保始终返回可修改列表的方法。我不想要复制。
答案 0 :(得分:0)
您无法保证,因为返回类型为Collection
。您可以做的是正确的文档。
在API设计方面,你应该让你的javadoc清晰!使用方法而不阅读其文档的人应该感到惊讶。
Is it acceptable to return unmodifiableList or should I return array?
答案 1 :(得分:0)
我认为你所寻找的不是一个接口而是一个特定的实现,因为一个接口定义了“如何成为事物”而不是“事情如何”。在其他世界中,您正在尝试建立一个特定的行为,因此,这里最好的方法是强制实施者使用特定版本的List
,如下所示:
public interface MyInterface {
MyModifiableList getList();
}
然后,您创建将由您的实施者使用的可修改类的版本。例如:
public final class MyModifiableList {
// Implementation...
}