【问题标题】:Anonymous Subclass of array? I think? Don't understand this syntax [duplicate]数组的匿名子类?我想?不明白这种语法[重复]
【发布时间】:2016-10-11 00:42:07
【问题描述】:

我不是 Java 程序员,但必须做一些 Java 工作。从一些谷歌搜索来看,这似乎是一个匿名子类。但是对象后面跟着“[]”。但是再次声明变量是一个对象。这只是与允许对象数组的最通用类型(对象)的逆变吗?

Object thing = new Object[] {someInt, anotherInt, someInterface, someString};

【问题讨论】:

  • 作为一个侧节点,使用Object[] 来存储不同的类型并不是顺利使用的最佳主意。
  • 是的,不是我的代码。读别人。虽然我猜在这种情况下,将这些值传递为一次性的事情,但仍然有点 hacky。
  • @lanza 我认为这是一个警告信号。正如 Kevin 所说,使用 Object[] 不是很顺利(它显然是某种类别),分配给 Object 只会增加 What The Fudge 因素。

标签: java anonymous-class


【解决方案1】:

没有。数组是最终的,因此您不能对它们进行子类化。代码只是创建了一个对象数组Object[],并在创建时用一些整数(自动装箱为Integer)、一个接口和一个字符串来填充它。

该示例的“奇怪”之处在于它将Object[] 分配给Object 引用。现在所有类都扩展了 Object 包括数组,所以这是有效的,但我无法想象在任何情况下使用 Object thing 而不是 Object[] thing 是有意义的,除非你故意试图让你的代码不那么清晰.

【讨论】:

  • 太好了,谢谢。 Object thing 而不是 Object[] thing 让我感到困惑。
  • @lanza 我本周早些时候写了an answer to a similar question,我认为这可能有助于消除您对ObjectObject[] 的一些困惑。
  • @AndyTurner 不错的答案。
  • @Kayaman 谢谢。需要明确的是,我在这里添加它并不是为了自我推销:) 感觉真的很相关。
  • @AndyTurner 是的,我不这么认为。它具有相关性、信息性和简洁性。
猜你喜欢
  • 1970-01-01
  • 2020-12-04
  • 2016-04-02
  • 1970-01-01
  • 2012-01-28
  • 2018-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多