确保参数类型具有伴随对象

时间:2017-11-18 14:56:09

标签: scala companion-object

我想做这样的事情(请不要问为什么):

trait A[T /* tell that there exists companion for T */] {
    def f = T.g
}

有可能实现这个目标吗?

1 个答案:

答案 0 :(得分:1)

不可能开箱即用。您必须使用基于宏的解决方案。我刚刚发布了a gist这样的解决方案。

您可以像这样使用它:

def getCompanion[T: HasCompanion] = HasCompanion[T].companion

但是,您不能在特征的类型参数上使用上下文边界。