在学校实验中,需要对这两个不同类型进行转化,但转化之后发现原来的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));
}