我正在尝试定义一个泛型方法,其参数受两种类型的约束,但它似乎不起作用:
public static <T extends Readable, Appendable> void doSomething(T t) {
int r = t.read(...); // compiles OK
//
t.append(...); // compile error
}
这应该编译。谁能看到我做错了什么?
答案 0 :(得分:11)
问题是该方法定义了两个参数,一个名为T
,另一个名为Appendable
,而不是一个带有两个边界的参数。
逗号应该是&符号,如下所示:
public static <T extends Readable & Appendable> void doSomething(T t) {
//
}