1
我定義的類是這樣的:Scala如何將Object類型傳遞給類型參數?
class Counta [T : TypeTag] {
--cutted--
}
我需要在運行時實例化這個類有正確的類型。 我有在運行時創建正確的對象類型的功能:
def ConvertSparkTypesToScala(dataType: DataType) = {
dataType match {
case IntegerType => Int
case BooleanType => Boolean
case FloatType => Float
case DoubleType => Double
case LongType => Long
case ByteType => Byte
case ShortType => Short
}
}
現在,當我嘗試實例化類是這樣的:
val scalaType = ConvertSparkTypesToScala(dt)
println(scalaType)
val countA = new Counta[scalaType.type]
println(scalaType)
我得到的例外,只有先調用println打印:
object scala.Int
then我得到異常:
java.lang.UnsupportedOperationException:模式爲 型scalaType.type不支持
所以基本上這不會表現得像你的代碼編寫類型相同。 所以問題是,我想做什麼?如果是的話,這是如何實現的?
事情是,在'ConvertSparkTypesToScala'中你沒有返回類型,你正在返回伴隨對象。看起來您正在嘗試在運行時將運行時信息轉換爲編譯時間信息;這不起作用。 –
我不知道你在做什麼,但它讓我發抖,因爲它使用反射。你有沒有考慮過:https://github.com/typelevel/frameless? – flavian