我一直在尝试正确理解 Java 泛型。所以在这个探索中,我遇到了一个原则“广告中的真实原则”,我试图用简单的语言来理解这一点。
广告真理原则:数组的具体化类型必须是其静态类型擦除的子类型。
我已经编写了示例代码 .java 和 .class 文件如下。请查看代码并解释哪部分(在代码中)指定/指示上述语句的哪一部分。
我已经写了评论,我认为我不应该在这里写代码描述。
public class ClassA {
//when used this method throws exception
//java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;
public static <T> T[] toArray(Collection<T> collection) {
//Array created here is of Object type
T[] array = (T[]) new Object[collection.size()];
int i = 0;
for (T item : collection) {
array[i++] = item;
}
return array;
}
//Working fine , no exception
public static <T> T[] toArray(Collection<T> collection, T[] array) {
if (array.length …Run Code Online (Sandbox Code Playgroud)