Я хотел бы сохранить Type или TypeTag в val для дальнейшего использования.В настоящее время мне приходится указывать тип в нескольких местах в блоке кода.Мне не нужно параметризировать код, потому что будет использоваться только один тип.Это скорее любопытство, чем необходимость.
Я пытался использовать typeOf, classOf, getClass и некоторые другие формы доступа к классу и типу.Решение, вероятно, простое, но в моих знаниях о типизации или ссылках Scala отсутствует эта концепция.
object Example extends App {
import scala.reflect.runtime.universe._
object TestClass { val str = "..." }
case class TestClass() { val word = ",,," }
def printType[A: TypeTag](): Unit = println(typeOf[A])
printType[List[Int]]() //prints 'List[Int]'
printType[TestClass]() //prints 'Example.TestClass'
val typeOfCompanion: ??? = ??? //TODO what goes here?
val typeOfCaseClass: ??? = ??? //TODO what goes here?
printType[typeOfCompanion]() //TODO should print something like 'Example.TestClass'
printType[typeOfCaseClass]() //TODO should print something like 'Example.TestClass'
}
Решение должно быть в состоянии сохранить Type или TypeTag или его решение.Затем передайте typeOfCompanion или typeOfCaseClass наподобие printTypetypeOfCompanion для печати.Может потребоваться изменить часть кода для печати;Я не уверен.