我试图创建一个特质,将提供在子类中添加抽象类型的名称的名称:获取抽象类型
trait T {
type T
def myClassOf[T:ClassTag] = implicitly[ClassTag[T]].runtimeClass
def getType = {
myClassOf[T].getSimpleName
}
}
class TT extends T {
type T = String
}
然而,这无法编译:
Error:(7, 15) not enough arguments for method myClassOf: (implicit evidence$1: scala.reflect.ClassTag[T.this.T])Class[_].
Unspecified value parameter evidence$1.
myClassOf[T].getSimpleName
^
但它工作正常,如果我将getType
方法移动到子类。有人可以解释为什么以及是否有办法从子课程中完成此调用?
感谢。这就说得通了。 – jamborta
有没有什么方法可以从同一个特征中调用getType方法?我想在签名固定的方法中使用它,以便它需要传递隐式参数 – jamborta
我不会马上看到方法。 –