以下编译 Java 7 但不是 Java 8 :
interface Handler<A,B> {}
class SomeClass<T> {
public <E> void doSomething(Class<E> typeV, T valueT) {
E valueE = null;
doSomethingElse(typeV, valueE, valueT);
}
private <X, Y, Z extends Enum<Z> & Handler<X,Y>> void doSomethingElse(Class<X> typeX, X valueX, Y valueY) {
// do something here
}
}
这是我看到的错误:
SomeClass类型中的方法doSomethingElse(Class,X,Y)不适用于参数(Class,E,T)
如果删除类绑定, 编译:
interface Handler<A,B> {}
class SomeClass<T> {
public <E> void doSomething(Class<E> typeV, T valueT) {
E valueE = null;
doSomethingElse(typeV, valueE, valueT);
}
private <X, Y, Z extends /* Enum<Z> & */ Handler<X,Y>> void doSomethingElse(Class<X> typeX, X valueX, Y valueY) {
// do something here
}
}
我正在使用 Eclipse Luna 4.4.0 和 JDK 8u102 。知道这里出了什么问题吗?这是一个错误吗?