Я только недавно обновил 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.Поэтому ошибка, с которой я сталкиваюсь, может быть своего рода регрессией, введенной с ее исправлением.