gpt4 book ai didi

Java 泛型 : Explanation of Example on SO

转载 作者:行者123 更新时间:2023-11-29 09:43:50 25 4
gpt4 key购买 nike

在另一个SO post ,以下示例作为对 OP 的响应给出:

public static <E> void funct1(final List<E> list1, final E something)
{
list1.add(something);
}

public static void funct2(final List<?> list, final Object something)
{
list.add(something); // does not compile
}

我已验证 funct1 可以编译,而 funct2 不能。但是,我无法弄清楚原因。

最佳答案

A List<?>是一个特定但未知类型的列表。编译器不允许调用具有泛型类型参数的方法,因为无法保证类型安全。它可能是 List<Integer> , 或 List<Foo> ,并且不应该能够添加 Object给它。编译器必须通过编译器错误来阻止此调用,以保持泛型提供的类型安全。

方法funct1编译是因为你总是可以添加一个 EList<E> ;它是同一类型引用:E .

关于Java 泛型 : Explanation of Example on SO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22082260/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com