有人可以解释这些通用语法吗? [重复]

问题描述 投票:-2回答:1

我正在查看Java库,我在Arrays.java中看到了这段代码:

public static <T> List<T> asList(T... a) {
    return new ArrayList<>(a);
}

而我只是想知道它不是假设:

return new ArrayList<T>(a);

我的猜测是它在ArrayList.java中调用此方法:

public ArrayList(Collection<? extends E> c) {
    elementData = c.toArray();
    if ((size = elementData.length) != 0) {
        // c.toArray might (incorrectly) not return Object[] (see 6260652)
        if (elementData.getClass() != Object[].class)
            elementData = Arrays.copyOf(elementData, size, Object[].class);
        } else {
            // replace with empty array.
            this.elementData = EMPTY_ELEMENTDATA;
        }
    }
}

问号在Collection中意味着什么?

java generics
1个回答
4
投票

从java 7开始,您可以使用return new ArrayList<>(a);而不是返回新的ArrayList<T>(a);,它将自动添加所需的类型。使用它作为<>告诉编译器它有一个类型,它匹配正确的一个(泛型只是元信息)

© www.soinside.com 2019 - 2024. All rights reserved.