【问题标题】:Unable to assign primitives to Object array in Eclipse无法在 Eclipse 中将基元分配给对象数组
【发布时间】:2019-10-20 00:55:39
【问题描述】:

我正在初始化对象数组如下:

Object a[] = new Object[4];

a[0] = 1; //while assigning integer value, am getting an error: "Type mismatch: Cannot convert Integer to Object
a[1] = 'A'; //while assigning char value, am getting an error: "Type mismatch: Cannot convert char to Object
a[2] = 12.33//while assigning integer value, am getting an error: "Type mismatch: Cannot convert double to Object
a[3] = "Hello"; //Accepting only string values.

请问哪里出错了?是配置问题吗?我正在使用:

Java Version jdk1.8.0_151,
jre1.8.0_151,

Eclipse Java EE IDE for Web Developers.
Version: Oxygen.2 Release (4.7.2)
Build id: 20171218-0600

【问题讨论】:

  • @MCEmperor 没有自动装箱?
  • 那些是原始类型,这就是原因。
  • @StephanHogenboom 我的错,它们确实是自动装箱的。
  • @MCEmperor,但我可以在另一个系统(我的同事系统)中存储相同的数据类型
  • @Praveen Eclipse IDE。您需要更新 Eclipse。如果您已经拥有最新的 Eclipse 版本,那么您应该file a bug

标签: java eclipse compiler-errors autoboxing


【解决方案1】:

如果您使用低于 5 的编译器合规级别,这正是您将收到的错误消息。请注意,这与您系统上的 Java 版本不同。在这里查看修复https://stackoverflow.com/a/24591529/11595728

【讨论】:

    【解决方案2】:

    intfloatdoublechar 都是 primitive 类型,因此它们不能“转换”为 Object

    Strings 是Objects,因此可以在数组中添加。

    要实现您可能想要的,您可以将它们转换为等效的对象:

    Object a[] = new Object[4];
    a[0] = Integer.valueOf(1); 
    a[1] = Character.valueOf('A');
    a[2] = Float.valueOf(12.33);
    a[3] = "Hello";
    

    【讨论】:

    • 从不使用 Integer 构造函数。始终使用Integer.of()
    • @niccord 因为这是一种很好的做法,您可能不知道。由于较新的 Java 版本,它也被弃用,就像 Zabuza 说的那样。 See here.
    • 它已从版本 9 中弃用,我不知道。感谢您的来信。
    • 你测试过代码吗?似乎(见问题 cmets)这被自动装箱所覆盖,并且可能是 Eclipses 编译器的一个错误。
    • @Zabuza 它确实有效。我想当然地认为它没有。
    【解决方案3】:

    我没有遇到你描述的问题。我认为它是自动装箱的,至少在我的配置环境中。

    public static void main(String[] args) {
            // TODO Auto-generated method stub
            Object a[] = new Object[4];
    
            a[0] = 1; //while assigning integer value, am getting an error: "Type mismatch: Cannot convert Integer to Object
            a[1] = 'A'; //while assigning char value, am getting an error: "Type mismatch: Cannot convert char to Object
            a[2] = 12.33;//while assigning integer value, am getting an error: "Type mismatch: Cannot convert double to Object
            a[3] = "Hello"; //Accepting only string values.
            for(Object i:a) {
                System.out.println(i.toString());
            }
        }
    

    右键单击->运行方式-> Java应用程序, 控制台输出:

    1
    A
    12.33
    Hello
    

    【讨论】:

    • 我的 Java 版本 jdk1.8.0_151、jre1.8.0_151、面向 Web 开发人员的 Eclipse Java EE IDE。版本:Oxygen.2 Release (4.7.2) Build id:20171218-0600
    • 这并没有真正解释或解决问题,也没有添加任何新内容。您的答案内容只是“无法重现”,这可能应该是评论而不是答案,请参阅How to Answer
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-02
    • 2016-05-10
    • 2010-11-22
    • 2017-12-10
    • 1970-01-01
    • 1970-01-01
    • 2011-06-06
    相关资源
    最近更新 更多