如何表示类型 T 必须是类型 U



有没有办法用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;
}

最新更新