Thực hiện một chồng chung, các thành ngữ sau đây được sử dụng và hoạt động mà không có vấn đề gìđúc Object [] để một kiểu tham chiếu mảng trong java
public class GenericStack<Item> {
private int N;
private Item[] data;
public GenericStack(int sz) {
super();
data = (Item[]) new Object[sz];
}
...
}
Tuy nhiên khi tôi thử những điều sau đây, nó gây ra một ClassCastException
String[] stra = (String[]) new Object[4];
Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;
Bạn giải thích điều này như thế nào?
Chuỗi không được kế thừa từ Mục, do đó, không thể truyền. – Piovezan
@Piovezan 'Chuỗi' và' Mục' không nằm trong cùng một dòng. – Dukeling
'mới GenericStack (10)' hoạt động nhưng nếu bạn thử 'Chuỗi [] stra = new GenericStack (10).getData(); '(thực hiện getter tương ứng), nó không thành công với ClassCastException. Vì vậy, nó không "thực sự" làm việc, dàn diễn viên đã không được thực hiện kỳ diệu. –