类型交集:在相交类型中使用类型变量

时间:2018-09-11 14:18:02

标签: java generics java-8

我想将方法​​的返回类型声明为类型变量和静态接口的交集(例如java.io.Serializable)。

理想情况下,我希望能够执行以下操作:

public class Main {

    public static <I, T extends I & java.io.Serializable> T foo(I object) {
        return null;
    }
}

但是,此代码给出了以下编译错误:

Main.java:3: error: a type variable may not be followed by other bounds
    public static <I, T extends I & java.io.Serializable> T foo(I object) {
                                           ^
1 error

根据the documentations of Java type intersection,这应该是可能的。

  

绑定的形式受到限制(只有第一个元素可以是   类或类型变量,并且只能在其中出现一个类型变量   一定要排除某些尴尬的情况。

该错误似乎很明显,但是在文档中没有提及这种限制。据我了解,如果由于需要接口而导致类型变量不能排在第一位之后,并且不能如错误所说那样紧随其后,则意味着不能在类型交集中使用类型变量。 / p>

Oracle文档似乎另有说明。

感谢您的见解。

0 个答案:

没有答案