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

Boh*_*ian 3 java generics

我试图定义一个泛型方法,其参数由两种类型绑定,但它似乎不起作用:

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

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

Boh*_*ian 11

问题是该方法定义了两个参数,一个是被调用的T,一个是被调用的Appendable,而不是一个带有两个边界的参数.

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

public static <T extends Readable & Appendable> void doSomething(T t) {
    //
}
Run Code Online (Sandbox Code Playgroud)