Sch*_*mer 5 java generics wildcard
我正在学习Java Generics.我的理解是Generics按类型参数化集合.在Oracle教程中,有以下注释:
在通用代码中,称为通配符的问号(?)表示未知类型.
在下一页中,下面是参数中带有上限通配符的方法声明示例:
public void process(List<? extends Foo> list)
Run Code Online (Sandbox Code Playgroud)
鉴于此,我想知道为什么这个方法声明是非法的:
public void process(List<E extends Number> list)
Run Code Online (Sandbox Code Playgroud)
虽然这是合法的:
public <E extends Number> void process(List<E> list)
Run Code Online (Sandbox Code Playgroud)
指定方法parm类型时,您使用的是泛型类型,因此必须事先定义它.在此语句中,您使用E而无需定义
public void process(List<E extends Number> list) { /* ... */ }
Run Code Online (Sandbox Code Playgroud)
但是,在第二个中,它是在方法返回类型(void)之前定义的:
public <E extends Number> void process(List<E> list) { /* ... */ }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
427 次 |
| 最近记录: |