我确定我错过了一些简单的东西,但这个问题似乎绝对是愚蠢的。
private static void method501(char ac[])
{
char ac1[] = ac.clone();
}
我的问题是char ac1[] = ac.clone();
在eclipse中抛出类型不匹配错误告诉我我无法将char数组转换为Object?
这是为什么? 不在eclipse的最新版本上给出了同样的错误,所以想知道这个旧版本是否给了我问题。
答案 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+功能。