【问题标题】:Type mismatch convert char[] to an object类型不匹配将 char[] 转换为对象
【发布时间】:2018-01-05 13:26:33
【问题描述】:

我确定我遗漏了一些简单的东西,但这个问题似乎非常愚蠢。

private static void method501(char ac[])
{
    char ac1[] = ac.clone();
}

我的问题是 char ac1[] = ac.clone(); 在 eclipse 中抛出 类型不匹配错误,告诉我无法将 char 数组转换为 Object?

有什么原因吗? 没有最新版本的eclipse上给我同样的错误,所以想知道是否只是这个旧版本给了我这个问题。

【问题讨论】:

  • 如果您显示错误的输出,其他人可以提供更好的帮助。
  • 当然不是反过来,即 Object to char[]
  • 类型不匹配:无法从 Object 转换为 char[] 是的,它是另一种方式
  • 该代码在我的机器上编译得很好。您使用的是什么版本的 Java?
  • 类型转换将修复它:char ac1[] = (char[])ac.clone();

标签: java eclipse debugging type-conversion


【解决方案1】:

如果您的编译器设置针对非常旧的源代码兼容性,则会在 Eclipse 中发生这种情况。

兼容级别为 1.5 或更高,这很好 - 但如果您将源兼容级别设置为 1.3 或 1.4,您会收到此错误,因为早期版本的 Java 语言规范没有 指定T[].clone() 返回T[]

来自 JLS 1.0 第 10.7 节的文本:

数组类型的成员都有以下几种:

  • [...]
  • 公共方法clone,覆盖类Object中的同名方法,不抛出检查异常

Java 8 JLS 中的等效文本:

数组类型的成员都有以下几种:

  • [...]
  • 公共方法clone,覆盖类Object中的同名方法,不抛出任何检查异常。数组类型T[]的克隆方法的返回类型为T[]

进入项目属性并检查它是使用默认设置还是项目特定设置,并修复适当的设置(项目特定设置或您的工作区设置)以使用更新的源代码兼容性.

我怀疑您会发现,在您当前的设置下,您也无法使用泛型或其他 1.5+ 功能。

【讨论】:

  • 不确定 1.5 是否是最早的,因为我目前的目标是 1.5,但 idk 可能只是 eclipse 不稳定。
  • @AndrewG:1.5 应该可以正常工作,并且可以在我的机器上运行 - 只有当我以 1.4 为目标时才会出现问题。尝试使用泛型...它们有效吗?
  • 我认为是因为我在目标 1.5 后没有重新启动 eclipse。但是我无论如何都在更新,因为我应该这样做。
  • 多么伟大的考古工作!我从 1.8 开始到 1.6。我没有勇气继续下去:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-27
  • 1970-01-01
  • 2020-08-10
  • 2013-12-25
相关资源
最近更新 更多