方法声明中泛型类型的多个边界不能在Java 8中编译

时间:2016-10-05 19:31:53

标签: java generics inference

以下编译 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 。知道这里出了什么问题吗?这是一个错误吗?

0 个答案:

没有答案