1

我在 Groovy 中使用 Trait 作为“扩展”约束时遇到问题。问题可以总结为:

以下作品:


interface AInterface {
    String getA()
}
trait ATrait implements AInterface {
    String a
}
class AClass implements ATrait {}
class GenericClass<T extends AInterface> {}
GenericClass<AClass> instance

以下没有:


interface AInterface {
    String getA()
}
trait ATrait implements AInterface {
    String a
}
class AClass implements ATrait {}
class GenericClass<T extends ATrait> {} // XXX: instead of AInterface
GenericClass<AClass> instance

这对我来说没有任何意义,也许是 Groovy 中的错误?我在 2.5.8 和 3.0.0 (rc) 版本中都尝试了 groovyc 和 groovy。

感谢您的帮助,特征对我非常有用,我宁愿不引入虚拟接口作为通用约束 - 即使这是一些解决方法。

4

0 回答 0