有没有办法用Java泛型告诉编译器类型T
必须是U
类型? 例如
public class Whatever<T, U> {
T specific;
U moreGeneral;
}
现在,我想确保 T 是 U
的子类。 有没有办法指定这一点?
只需使用
public class Whatever<T extends U,U>
为了澄清,以下内容可以在 1.7 之前的 JDK 上解决问题。当尝试切换你和T的声明顺序时,我得到了illegal forward reference to type argument U
.与其他帖子一样,对于较新的JDK版本来说,这似乎不是问题。
根据这篇文章,这在JDK 1.7中得到了修复
public class Whatever <U, T extends U> {
T specific;
U moreGeneral;
}