类型不匹配将char []转换为对象

时间:2017-07-29 15:40:15

标签: java eclipse debugging type-conversion

我确定我错过了一些简单的东西,但这个问题似乎绝对是愚蠢的。

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

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

这是为什么? 在eclipse的最新版本上给出了同样的错误,所以想知道这个旧版本是否给了我问题。

1 个答案:

答案 0 :(得分:6)

如果您已经将编译器设置定位到非常古老的源兼容性,则会在Eclipse中发生这种情况。

兼容级别为1.5或更高时,它很好 - 但如果将源兼容级别设置为1.3或1.4,则会出现此错误,因为早期版本的Java语言规范< em> didn&#t; 指定T[].clone()返回T[]

来自JLS 1.0第10.7节的文本:

  

数组类型的成员是以下所有成员:

     
      
  • [...]
  •   
  • 公共方法clone,它会覆盖类Object中同名的方法,并且不会抛出任何已检查的异常
  •   

Java 8 JLS中的等效文本:

  

数组类型的成员是以下所有成员:

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

进入项目属性并检查它是否使用默认设置或项目特定设置,并修复相应的设置(项目特定的设置或工作区设置)以使用更多的设置 - 日期源兼容性。

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