我正在阅读一个问题,下面给出了方法的签名
public static List super E> doIt(List nums)
我无法解码语法.我对仿制药很陌生,无法理解
这部分.第一部分< E扩展了CharSequence>都告诉E应该是什么
作为参数和返回类型.但我确实看到列表了吗?超级E> ;,这定义了
返回类型的范围.有人可以通过示例帮助我理解这一点吗?
谢谢.
解决方法:
告诉E将成为CharSequence的子类型.这告诉编译器将传递给此方法的type参数将是CharSequence或该类型的子类型.这种类型的绑定称为参数绑定.我已经写了an article关于这个话题,如果愿意的话,可以查看一下.
List super E>
告诉此方法将返回一个元素列表,其类型将为E或其父类型.
因此,可以从您的doIt方法返回以下所有类型-
// trivial one.
return new ArrayList();
// If F is a super type of E, then the following line is valid too.
return new ArrayList();
// The following will also be valid, since Object is a super type of all
// other types.
return new ArrayList();
列表< ;?超级E -这通常称为逆变. Check this out.
标签:generics,java
来源: https://codeday.me/bug/20191030/1968369.html