Код ниже не компилируется в Groovy 3.0.4 (хотя его прекрасно с Groovy 2.5.0 и ниже)
Factory<SomeImpl> f = new Factory<>();
trait Base {}
class SomeImpl implements Base {}
class Factory<T extends Base> {}
Точная ошибка, которую я получаю:
The type SomeImpl is not a valid substitute for the bounded parameter <T extends Base> @ line 1, column 9.
Factory<SomeImpl> f = new Factory<>();
Изменение Base с trait на interface позволяет компилировать код должным образом, и он работает (как в Java).
Является ли трейт чем-то отличным от интерфейса, который не позволяет нам создавать такие конструкции? или это ошибка в последних groovy версиях?