22

scala Reflect API を見ていると、多くの例外が発生しています。

ドキュメント参照: http://docs.scala-lang.org/overviews/reflection/environment-universes-mirrors.html

ジェネリックから typetag を取得するにはどうすればよいですか?

  def getChildSettings[T: ru.TypeTag](path: String, settingsParameterObject: T) = {

    import scala.reflect.runtime.{ currentMirror => m }

    val m = ru.runtimeMirror(getClass.getClassLoader)
    val classC = ru.typeOf[T].typeSymbol.asClass
}

例外があります:

No TypeTag available for ParameterObject.type

非常に単純な例でさえ機能していないようです(はい、replで機能します)

import scala.reflect.runtime.universe._
import scala.reflect.runtime.currentMirror
import scala.reflect.runtime.{universe => ru}

def getTypeTag[T: ru.TypeTag](obj: T) = ru.typeTag[T]

case class ParameterObject(stringType: String, optionType: Option[String])

getTypeTag(ParameterObject)

メソッドを呼び出す方法についての何かだと思います。

4

5 に答える 5

14

メインクラスを実行する前に Case クラスを宣言してください

case class Person(name: String, age: Long)

def main(args: Array[String]) {
   ...
    val people = sc.textFile("C:\\winutils\\people.txt").map(_.split(",")).map(p => Person(p(0), p(1).trim.toInt)).toDF()
于 2016-04-19T03:32:41.233 に答える
9

ネストされたクラスの型タグが必要な場合は、WeakTypeTag を使用できます。理由はわかりませんが、意図的にそうしています。

于 2014-08-22T18:05:52.830 に答える