在学校实验中,需要对这两个不同类型进行转化,但转化之后发现原来的Set中的对象将被转化为Object类型,用强制类型转化,将抛出异常。
产生异常
Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Lfirst.Cat;
public static void main (String[] args) {
Cat cat1 = new Cat(1,2);
Set<Cat> hs = new HashSet<Cat>();
hs.add(cat1);
Cat[] CatArray = (Cat[]) hs.toArray();
System.out.println(CatArray[0].equals(cat1));
}
修改方式
public static void main (String[] args) {
Cat cat1 = new Cat(1,2);
Set<Cat> hs = new HashSet<Cat>();
hs.add(cat1);
Cat[] CatArray = new Cat[1];
CatArray=hs.toArray(CatArray);
//将要用于拷贝的Array作为参数放入,返回的Array就是传入Array
//故还可以写为 hs.toArray(CatArray);
System.out.println(CatArray[0].equals(cat1));
}

本文探讨了在Java中从Set<Cat>转换到Cat[]数组时遇到的ClassCastException异常,通过提供代码示例解释了错误原因,并展示了如何正确地使用toArray方法避免异常,确保类型安全。

被折叠的 条评论
为什么被折叠?



