一些地方,例如Generic wildcard types should not be used in return parameters和其他一些地方,我说过在返回类型中不应该使用通配符。据我了解,其背后的原因是该方法的用户不必键入? extends Something
。
在我最近的一些项目中,我一直在返回类型中使用通配符来显示和强制执行不应将值添加到Collection
或确保调用者不调用任何引用该类型的方法的情况。 Something
当他们只应使用返回值来获取东西(迭代或调用get(index)
等时)。
// some of what my code looks like
interface ClassThatReturnsCollection {
// I want to enforce immutability even if the
// returned implementation isn't immutable
Collection<? extends AnotherObject> getOtherObjects();
}
我想我的问题是,这是一个有效的用例吗?这完全不好吗?