タイトルに対応して、私の問題は、このジェネリック型で初期化されたクラスのインスタンス内にあるジェネリック配列の配列長を取得することです。配列の長さ(ak.array.length)を取得したい場合、javaは次のエラーをスローします。
スレッド"main"の例外java.lang.ClassCastException:[Ljava.lang.Object; [Ljava.lang.String;にキャストできません。Testclass.main(Testclass.java:15)で
では、このコードのどこに私の欠点がありますか?前もって感謝します
public class Testclass {
static class ArrayKeeper<T> {
protected T[] array;
public ArrayKeeper() {
array = (T[])new Object[5];
}
}
public static void main(String[] args) {
//create a new instance of inner class ArrayKepper (type String)
Testclass.ArrayKeeper<String> ak = new Testclass.ArrayKeeper<String>();
System.out.println(ak.array.length); //cast error here.
}
}