1
の要素の型を取得するために、私はSeq[AnyRef]
の要素の型をチェックする、使用ClassTagとTypeTag次のテストケースを伴う配列[AnyRef]
@Test
def testClassTagAndTypeTag(): Unit = {
import scala.reflect.runtime.universe._
def getTypeTag[T: TypeTag](data: T): TypeTag[T] = typeTag[T]
def getClassTag[T: ClassTag](data: T): ClassTag[T] = implicitly[ClassTag[T]]
val data = Seq(List(1), "Hello", new Box(1))
data.foreach(x => {
println(s"TypeTag: ${getTypeTag(x)}, tpe: ${getTypeTag(x).tpe}")
})
data.foreach(x => {
println(s"ClassTag: ${getClassTag(x)}")
})
}
上記のコードの出力であります:
TypeTag: TypeTag[java.lang.Object], tpe: java.lang.Object
TypeTag: TypeTag[java.lang.Object], tpe: java.lang.Object
TypeTag: TypeTag[java.lang.Object], tpe: java.lang.Object
ClassTag: Object
ClassTag: Object
ClassTag: Object
私はタイプのタグが出力
List[Int]
String
Box[Int]
あるべき配列の要素の実数型をべきであると考え
ありがとうございました。役立つ答えは@ alexey-romanovです。しかし、私はそれがとても単純なケースのためにとても複雑であることを少し驚いています... – Tom