3

所以我有一个界面:

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

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

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

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

4

2 回答 2

0

你不能保证,因为返回类型是Collection. 你可以做的是一个合适的文档。

在 API 设计方面,您应该明确您的 javadoc!使用方法而不阅读其文档的人应该得到惊喜。

返回 unmodifiableList 是否可以接受,还是应该返回数组?

于 2013-07-17T13:53:58.157 回答
0

我认为您正在寻找的不是接口,而是特定的实现,因为接口定义了“事情应该如何”而不是“事情如何”。在其他世界中,您正在尝试建立特定的 a 行为,因此,最好的方法是强制实施者使用特定版本的List,如下所示:

public interface MyInterface {
    MyModifiableList getList();    

}

然后,您创建将由您的实现者使用的可修改类的版本。举个例子:

public final class MyModifiableList {
     // Implementation...
}
于 2013-07-17T17:38:02.390 回答