当前位置: 首页 > 知识库问答 >
问题:

为什么匿名数组引用Object类对象时没有问题

毕嘉
2023-03-14

下面的表达没有问题-

Object obj = new int[] { 1, 2, 3 };

但以下两个有编译时间问题-

Integer i = new int[] { 1, 2, 3 };
        int j = new int[] {1,2,3};

为什么呢?

共有1个答案

狄旻
2023-03-14
var array = new int[]{1,2,3}

类型为int[],而不是整数。

在Java中,数组有一个超类Object。因此,将该数组分配给对象是正确的(如果实际上没有用)

 类似资料:
  • 下面的表达没有问题- 但下面两个有编译时问题- 为什么呢?

  • 问题内容: 我正在向我的朋友解释OOP。我无法回答这个问题。(我有多可耻? 我只是想逃避,因为OOP描绘了现实世界。在现实世界中,父母可以容纳孩子,但孩子不能容纳父母。OOP也是如此。我知道它很愚蠢。:P 为什么此陈述无效? 因为aChild的成员是aParent成员的超集。那为什么孩子不能容纳父母。 问题答案: 正是因为aChild是aParent功能的超集。你可以写: 因为每只狐狸都是动物。但

  • 传递给Stream.Generate方法的函数实现了供应商功能接口。注意,要作为生成器有用,供应商通常需要某种外部状态。在本例中,它的状态由两个最后的斐波那契序列号组成。 为了实现这种状态,我们使用一个数组而不是两个变量,因为lambda内部使用的所有外部变量都必须是final的。 我理解为什么在lamdba或匿名类中变量需要是final的,但我不理解为什么数组的值是“有效的final”的。 在这

  • 问题内容: 根据JLS: 15.9.5匿名类声明编译器会自动从类实例创建表达式派生匿名类声明。 匿名类从不抽象(第8.1.1.1节)。匿名类始终是内部类(第8.1.3节);它永远不是静态的(第8.1.1节,第8.5.2节)。 匿名类始终是隐式最终的(第8.1.1.2节) 。 这似乎是一个特定的设计决定,所以它有一定的历史。 如果我选择上这样的课: 如果选择的话,为什么不允许我再次对其进行子类化?

  • 问题内容: 尽管Java中的所有类都是Object类的子类,但是与其他对象类型不同,但是如果没有强制类型转换,则不能将Object类型的引用变量分配给任何其他引用类型。 例如: 问题答案: 您想知道为什么我们使用显式类型转换。这就是关于继承的一切- 让我来清除此-让我们有两个类 A类 和 B类 。和 B类 是子类的 类A 。这意味着 Class B 具有 Class A的 所有功能,这意味着 Cl

  • 我试图用java创建一个anon类 它似乎根本不起作用,它给了我一个错误,说run()方法未定义。尽管我创建了一个包含run()方法的anon类,但我是一个完全的java初学者,我大部分时间用javascript编写代码,javascript是我最熟悉的语言,我正在努力适应java的概念,所以对这里的很多人来说,这个问题可能看起来很愚蠢,我为此道歉。提前谢谢