我想将方法的返回类型声明为类型变量和静态接口的交集(例如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文档似乎另有说明。
感谢您的见解。