有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在java中将对象[]强制转换为引用类型数组

在通用堆栈的实现中,使用了以下习惯用法,并且工作起来没有任何问题

public class GenericStack<Item> {
    private int N;
    private Item[] data;    

    public GenericStack(int sz) {
        super();
        data = (Item[]) new Object[sz];

    }
        ...
}

然而,当我尝试以下内容时,它会导致ClassCastException

String[] stra = (String[]) new Object[4];

Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;

你怎么解释


共 (1) 个答案

  1. # 1 楼答案

    由于泛型类型擦除项数组有效地成为对象数组。因此类型匹配。但当你用具体类型的字符串做的时候,它不会未应用类型擦除,但会失败