4
我可以看到,reflect.runtime.TypeRef
有三種額外的方法超過reflect.runtime.Type
,但兩者之間的主要區別是什麼?爲什麼Type
已經包含這些方法?我該如何檢索TypeRef
的值?TypeRef和Type有什麼區別?
我可以看到,reflect.runtime.TypeRef
有三種額外的方法超過reflect.runtime.Type
,但兩者之間的主要區別是什麼?爲什麼Type
已經包含這些方法?我該如何檢索TypeRef
的值?TypeRef和Type有什麼區別?
canonical type pattern match顯示的不是TypeRef
的所有內容,即跟隨TypeRef
提取器的所有內容。
例如,方法類型不像類那樣採用類型參數。 f[Int]
並不意味着「專門用於Int」的方式List[Int]
是List[Any]
的子類型或類似的String => Int
和String => Any
。所以一個方法類型沒有類型參數。
通常'Type'可以被轉換或匹配到'TypeRef' - 你可以在反射示例中一遍又一遍地看到它。我認爲實際的興趣問題可能是「什麼時候Type是不是'TypeRef'?」。 –
@JCracknell我同意。 –
一個有趣的例子是像'List [_]'這樣的存在類型,它可以轉換爲'TypeRef',但是當你試圖訪問'args'時會拋出一個異常。這實際上是一個bug。 –