所以我有一个界面:
public interface
{
List<String> getList();
}
但是,我相信实施者可以返回一个不可修改的列表,例如:
List<String> getList()
{
return Collections.unmodifiablelist(new ArrayList<String>());
}
是否有任何接口,或确保始终返回可修改列表的方法。我不想复制。
你不能保证,因为返回类型是Collection
. 你可以做的是一个合适的文档。
在 API 设计方面,您应该明确您的 javadoc!使用方法而不阅读其文档的人应该得到惊喜。
我认为您正在寻找的不是接口,而是特定的实现,因为接口定义了“事情应该如何”而不是“事情如何”。在其他世界中,您正在尝试建立特定的 a 行为,因此,最好的方法是强制实施者使用特定版本的List
,如下所示:
public interface MyInterface {
MyModifiableList getList();
}
然后,您创建将由您的实现者使用的可修改类的版本。举个例子:
public final class MyModifiableList {
// Implementation...
}