可修改列表的界面

时间:2013-07-17 13:50:07

标签: java list

所以我有一个界面:

public interface
{
    List<String> getList();
}

但是,我相信实施者可以返回一个不可修改的列表,如:

List<String> getList()
{
    return Collections.unmodifiablelist(new ArrayList<String>());
}

是否有任何接口,或确保始终返回可修改列表的方法。我不想要复制。

2 个答案:

答案 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...
}