编译以下代码时出现错误:
import groovy.transform.CompileStatic
@CompileStatic
class Test {
trait BaseTrait {}
trait ExtendingTrait extends BaseTrait {}
static class BaseTraitImplementor implements BaseTrait {}
static class ExtendingTraitImplementor implements ExtendingTrait {}
static class BothTraitImplementor implements ExtendingTrait, BaseTrait {}
static class UsingTraits<T extends BaseTrait> {}
UsingTraits<BaseTraitImplementor> instance1
UsingTraits<ExtendingTraitImplementor> instance2 // <- compiler complains here
UsingTraits<BothTraitImplementor> instance3
}
编译错误:
Groovy-Eclipse: Bound mismatch: The type Test.ExtendingTraitImplementor is not a valid substitute for the bounded parameter <T extends Test.BaseTrait> of the type Test.UsingTraits<T>
看来编译器无法解决ExtendingTrait实际上扩展BaseTrait的问题,我需要手动提供它(请参见BothTraitImplementor类)。
我是在做错什么还是错误?
最佳答案
我找到了答案。事实证明,Groovy-Eclipse编译器已经过时并且存在许多错误。当我切换到groovyc时,一切进展顺利。