Тип не является допустимой заменой ограниченного параметра - PullRequest
0 голосов
/ 11 июня 2019

Я только недавно обновил Groovy 2.5.6 до 2.5.7.С 2.5.6 код просто скомпилирован нормально, но с 2.5.7 я получаю следующую ошибку The type E is not a valid substitute for the bounded parameter <E extends java.lang.Enum<E>.

Я попытался запустить эквивалент в Java, где он (так же, как версия 2.5.6) скомпилирован нормально.(Обратите внимание, что я работаю на oracle java 8.141)

Вот этот код:

class A<E extends Enum<E> & Sayable> {
    B<E> b // here the error occurs
}

class B<E extends Enum<E> & Sayable> {
}

interface Sayable {
    String saySomething()
}

enum Hello implements Sayable {
    HELLO;

    @Override
    String saySomething() {
        return name()
    }
}

public static void main() {
   A<Hello> a = new A<>()
}

А вот эквивалентный код Java:

class Scratch {
    interface Sayabel {
        String saySomething();
    }

    enum Hello implements Sayabel {
        HELLO;

        @Override
        public String saySomething() {
            return name();
        }
    }

    static class A<E extends Enum<E> & Sayabel>{
        B<E> b;
    }

    static class B<E extends Enum<E> & Sayabel> {
    }

    public static void main(String[] args) {
       A<Hello> a = new A<>();
    }
}

Очевидно, этоне настоящий код, но он в основном такой же.

У кого-нибудь есть идея?

Редактировать:

После некоторых дальнейших исследований я обнаружил это Отличный вопрос, который был закрыт с версией 2.5.7.Поэтому ошибка, с которой я сталкиваюсь, может быть своего рода регрессией, введенной с ее исправлением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...