Tôi đang xem xét API phản ánh scala và tôi nhận được rất nhiều ngoại lệ.Scala - No TypeTag Có ngoại lệ khi sử dụng lớp vỏ để cố gắng lấy TypeTag?
Doc tham khảo: http://docs.scala-lang.org/overviews/reflection/environment-universes-mirrors.html
Làm thế nào để tôi có được typetag từ chung chung?
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
}
tôi nhận được một ngoại lệ:
No TypeTag available for ParameterObject.type
Thậm chí một ví dụ rất đơn giản dường như không làm việc (chỉnh sửa có nó trong 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)
Tôi đoán đó là một cái gì đó về cách tôi gọi phương thức.
Hum, chỉ cần dán ví dụ đơn giản của bạn trong REPL (và xóa 'settings.') làm việc cho tôi trên 2.10.1. Bạn có thể bỏ lỡ scala-phản ánh trên classpath của bạn? – gourlaysama
Đam tàn! Bạn nói đúng nó làm việc trong repl. Tôi đã tìm ra - các lớp vỏ không thể lồng nhau !! Tôi đã có trường hợp lớp được xác định bên trong một trường hợp thử nghiệm và đó là những gì đã gây ra vấn đề. – JasonG