Java 泛型问题

发布于 2024-10-26 00:25:18 字数 259 浏览 1 评论 0原文

我有这个类 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

香草可樂 2024-11-02 00:25:18

Integer 类型的变量可以为 null。 int 不能为 null。后者是基元类型,前者是用于将基元作为对象处理的包装引用类型。如果您使用此:

Entry<Integer, String> myEntry;

那么您必然使用包装类型。基元不能用作 Java 中的类型参数,因此不能使用 Entry(它无法编译)。

A variable of type Integer can be null. An int 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:

Entry<Integer, String> myEntry;

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).

各自安好 2024-11-02 00:25:18

您不能使用基元作为类型参数。

You can't use primitives as type parameters.

执笏见 2024-11-02 00:25:18

泛型类型参数必须是对象,不能是基元。因此,您可以使用 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文