Java 泛型问题
我有这个类 Entry...
public class Entry <K, V> {
private final K mKey;
private final V mValue;
public Entry() {
mKey = null;
mValue = null;
}
}
如果我使用 int 作为 mKey 会发生什么?据我所知,整数不能为空!
I have this class Entry...
public class Entry <K, V> {
private final K mKey;
private final V mValue;
public Entry() {
mKey = null;
mValue = null;
}
}
What happens if I use an int as the mKey? As far as I know ints can't be null!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
Integer
类型的变量可以为 null。int
不能为 null。后者是基元类型,前者是用于将基元作为对象处理的包装引用类型。如果您使用此:那么您必然使用包装类型。基元不能用作 Java 中的类型参数,因此不能使用
Entry
(它无法编译)。A variable of type
Integer
can be null. Anint
cannot be null. The latter is the primitive type, the former is a wrapper reference type for dealing with primitives as an Object. If you're using this:Then you are necessarily using the wrapper type. Primitives can't be used as type parameters in Java so you can't have
Entry<int, String>
for example (it won't compile).您不能使用基元作为类型参数。
You can't use primitives as type parameters.
泛型类型参数必须是对象,不能是基元。因此,您可以使用 mKey / mValue 周围的 Integer 包装类并将其设置为 null,但尝试使用 int 原语总会给您带来编译错误。
Generic type parameters need to be objects, they can't be primitives. So you can use the
Integer
wrapper class around mKey / mValue and set it to null, but trying to use the int primitive will always give you a compilation error.