考虑以下2个方法声明:
1. public abstract <T extends MetaData> List<T> execute();
2. public abstract List<? extends MetaData> execute();
Run Code Online (Sandbox Code Playgroud)
两者似乎都返回了扩展MetaData的对象列表.
他们之间有什么区别?
Mar*_*nik 12
在第一种情况下,您将允许Java使用类型推断并推断T每个调用站点的类型.
在第二种情况下,你将总是得到一个List<? extends MetaData>,所以将无法将其分配给任何较窄类型的变量,如List<IntegerMetaData>.
| 归档时间: |
|
| 查看次数: |
558 次 |
| 最近记录: |