Java 我应该把<&燃气轮机;对于泛型类型?
考虑一下这个被剪掉的代码:Java 我应该把<&燃气轮机;对于泛型类型?,java,Java,考虑一下这个被剪掉的代码: public class MaxSizeHandler extends AbstractValueHandler<Collection> { } 公共类MaxSizeHandler扩展了AbstractValueHandler{ } 我使用eclipse,它警告我为集合添加推断泛型参数类型,代码更改如下: public class MaxSizeHandler extends AbstractValueHandler<Collecti
public class MaxSizeHandler extends AbstractValueHandler<Collection> {
}
公共类MaxSizeHandler扩展了AbstractValueHandler{
}
我使用eclipse,它警告我为集合添加推断泛型参数类型,代码更改如下:
public class MaxSizeHandler extends AbstractValueHandler<Collection<?>> {
}
公共类MaxSizeHandler扩展了AbstractValueHandler添加正确的类型将允许类返回正确类型的值,您的集合
是否有特定类型的对象,即整数
,然后使用AbstractValueHandler
添加正确的类型将允许类返回正确类型的值,您的集合
是否有特定类型的对象,即整数
,然后使用AbstractValueHandler
传递原始集合
将意味着集合
未参数化,因此您失去了(即在编译时)强键入集合
中内容的能力
传递集合
并没有实质性的不同,因为通配符将匹配任何扩展对象
当然,它将删除警告
最好的方法是传递集合
或集合传递原始集合
将意味着集合
未参数化,因此您失去了强烈键入集合
中内容的能力(即在编译时)
传递集合
并没有实质性的不同,因为通配符将匹配任何扩展对象
当然,它将删除警告
最好的方法是传递集合
或集合您需要在集合类型之前以通用格式提及集合类型,如下所示:
public class MaxSizeHandler extends AbstractValueHandler<Collection<? extends T>> {
}
公共类MaxSizeHandler扩展了AbstractValueHandler您需要在其前面提到集合类型,格式如下:
public class MaxSizeHandler extends AbstractValueHandler<Collection<? extends T>> {
}
public类MaxSizeHandler扩展了AbstractValueHandler,这取决于您如何使用MaxSizeHandler
类,使此类本身具有泛型可能是有意义的。例如,如果需要迭代集合:
public class MaxSizeHandler<T>
extends AbstractValueHandler<Collection<? extends T>> {
public void handle(Collection<? extends T> coll) {
for(T item : coll) {
// ...
}
}
}
public class MaxSizeHandler<T>
extends AbstractValueHandler<Collection<? super T>> {
public void handle(Collection<? super T> coll) {
T item = createAnItem();
coll.add(item);
}
}
公共类MaxSizeHandler
扩展AbstractValueHandler,这取决于您如何使用MaxSizeHandler
类,使该类本身具有泛型可能是有意义的。例如,如果需要迭代集合:
public class MaxSizeHandler<T>
extends AbstractValueHandler<Collection<? extends T>> {
public void handle(Collection<? extends T> coll) {
for(T item : coll) {
// ...
}
}
}
public class MaxSizeHandler<T>
extends AbstractValueHandler<Collection<? super T>> {
public void handle(Collection<? super T> coll) {
T item = createAnItem();
coll.add(item);
}
}
公共类MaxSizeHandler
扩展AbstractValueHandlerEclipse正在询问-“什么的集合?”Eclipse正在询问-“什么的集合?”伟大的答案。较小的编译时好处,使Eclipse关闭的主要好处。=)@corsiKa另一种关闭eclipse的方法是不使用eclipse;)如果您想向集合中添加项,则通配符会产生很大的影响。回答得很好。较小的编译时好处,使Eclipse关闭的主要好处。=)@corsiKa另一种关闭eclipse的方法是不使用eclipse;)如果要向集合中添加项,则通配符会产生很大的差异。