gpt4 book ai didi

Java 泛型 : Type Extension In Method Declaration Parameters

转载 作者:搜寻专家 更新时间:2023-10-31 08:26:26 27 4
gpt4 key购买 nike

我正在学习 Java 泛型。我的理解是泛型按类型参数化集合。在 Oracle 教程中有以下评论:

In generic code, the question mark (?), called the wildcard, represents an unknown type.

在下一页中有以下方法声明示例,在参数中使用上限通配符:

public void process(List<? extends Foo> list)

鉴于此,我想知道为什么这个方法声明是非法的:

public void process(List<E extends Number> list)

虽然这是合法的:

public <E extends Number> void process(List<E> list)

最佳答案

指定方法参数类型时,您使用的是通用类型,因此必须预先定义它。在这个语句中,你使用了没有定义的 E

public void process(List<E extends Number> list) { /* ... */ }

然而,在第二个中,它是在方法返回类型(void)之前定义的:

public <E extends Number> void process(List<E> list) { /* ... */ }

关于Java 泛型 : Type Extension In Method Declaration Parameters,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22079570/

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