为啥我们在枚举中写 Integer 而不是 int? [复制]

Posted

技术标签:

【中文标题】为啥我们在枚举中写 Integer 而不是 int? [复制]【英文标题】:why are we writting Integer instead of int in enumeration? [duplicate]为什么我们在枚举中写 Integer 而不是 int? [复制] 【发布时间】:2016-09-27 15:38:03 【问题描述】:

此问题因情况而异,您将我的问题标记为重复的问题并不能完全阐明我的问题情况答案。

导入 java.util.Enumeration; 导入java.util.Vector;

public class EnumerationDemo 

    public static void main(String[] args) 
        Vector vector = new Vector();
        for (int item = 1; item <= 5; item++) 
            vector.addElement(item);
        
        System.out.println(vector);
        Enumeration enumeration = vector.elements();
        while (enumeration.hasMoreElements()) 
            Integer integer = (Integer) enumeration.nextElement();
            System.out.println(integer);
        
    

为什么我们在枚举中写整数而不是 int?

【问题讨论】:

你为什么使用Vector?这段代码似乎也早于泛型。 【参考方案1】:

你可以写int而不是Integer,像这样:

int integer = (Integer) enumeration.nextElement();

由于自动装箱/拆箱 (demo),它可以在 Java 版本 5 或更高版本上编译和运行。

您需要对Integer 而不是int 进行强制转换的原因是Java 将原始类型与Object 派生的引用类型分开处理,因此无法在标准Java 集合中存储原始类型而不包装它们在他们的Object-派生等效项中。

【讨论】:

感谢您的解释...我现在明白了

以上是关于为啥我们在枚举中写 Integer 而不是 int? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

为啥 BCL 集合使用结构枚举器,而不是类?

为啥使用常量而不是枚举?

为啥我们需要在 C++ 中使用 `int main` 而不是 `void main`? [复制]

Java 枚举 - 为啥使用 toString 而不是 name

将 CDialog CComboBox 控件映射到枚举类对象而不是 int?

为啥我们不能使用减号关键字而不是减号