考虑这个剪切代码:
public class MaxSizeHandler extends AbstractValueHandler<Collection> {
}
Run Code Online (Sandbox Code Playgroud)
我使用eclipse,它警告我为Collection添加推断泛型参数类型,代码更改如下:
public class MaxSizeHandler extends AbstractValueHandler<Collection<?>> {
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,如果我不提出它会有什么问题,或者如果我提出它有什么好处?
传递原始Collection意味着Collection没有参数化,因此你失去了强烈输入(即在编译时)内容的能力Collection.
传递a Collection<?>并没有实质性的不同,因为通配符将匹配任何扩展Object.
当然,它会删除警告.
最好的方法是通过a Collection<MyObject>或a Collection<? extends MyObject>等.