我試圖創建一個特質,將提供在子類中添加抽象類型的名稱的名稱:獲取抽象類型
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
我不會馬上看到方法。 –