小编Gag*_*ngh的帖子

理解 Java 泛型广告中的真实原则

我一直在尝试正确理解 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)

java generics

6
推荐指数
2
解决办法
550
查看次数

标签 统计

generics ×1

java ×1