如何表达类型T必须是U型?

时间:2014-12-19 23:31:16

标签: java generics java-8 java-7

Java泛型是否有办法告诉编译器类型T必须是U类型? E.g。

public class Whatever<T, U> {

    T specific;
    U moreGeneral;

}

现在,我想确保T是U的子类。有没有办法指定这个?

2 个答案:

答案 0 :(得分:8)

只需使用

public class Whatever<T extends U,U>

答案 1 :(得分:4)

为了澄清,以下内容将在JDK 1.7之前完成。当试图切换U和T的声明顺序时,我得到illegal forward reference to type argument U。与其他帖子一样,对于较新的JDK版本,它似乎不是问题。

根据post,这已在JDK 1.7中修复

public class Whatever <U, T extends U> {
    T specific;
    U moreGeneral;
}