使用多个通用边界时编译错误

时间:2013-12-20 09:15:23

标签: java generics

我正在尝试定义一个泛型方法,其参数受两种类型的约束,但它似乎不起作用:

public static <T extends Readable, Appendable> void doSomething(T t) {
    int r = t.read(...); // compiles OK
    //
    t.append(...); // compile error
}

这应该编译。谁能看到我做错了什么?

1 个答案:

答案 0 :(得分:11)

问题是该方法定义了两个参数,一个名为T,另一个名为Appendable,而不是一个带有两个边界的参数。

逗号应该是&符号,如下所示:

public static <T extends Readable & Appendable> void doSomething(T t) {
    //
}