2017-12-27 401 views
3

我有一些類型標記的Scala代碼,我需要爲Java用戶提供這些代碼。我的問題歸結爲解決以下問題:手動創建類型標記

給定兩個Scala類型標記,如何手動爲Tuple2 [A,B]創建一個類型標記?

如果這有什麼差別我的具體情況是有點簡單: 我有一個一類的標籤,我需要創建Tuple2 [字符串,A]代碼類型

回答

4

類型標籤通常用作暗含,所以隱式系統對它們非常熟悉。只要告訴斯卡拉你想要什麼類型,並隱式地詢問它。

def tupleTag[A : TypeTag, B: TypeTag]: TypeTag[Tuple2[A, B]] = implicitly 

如果可以實例化,Scala會這樣做。如果它不能,這是一個編譯器錯誤。在這種情況下,由於AB已經是具體的(因爲它們有標籤),因此Tuple2[A, B]也總是具體。

+0

你和你的隱性魔法:) – harel