Skip to content

Instantly share code, notes, and snippets.

@miguelortegarodriguez
Last active July 27, 2020 04:07
Show Gist options
  • Save miguelortegarodriguez/22d51ebb2a13dccbc34a to your computer and use it in GitHub Desktop.
Save miguelortegarodriguez/22d51ebb2a13dccbc34a to your computer and use it in GitHub Desktop.
Convert scala type to java type
import java.lang.reflect.{ParameterizedType, Type => JType}
import scala.reflect.runtime.universe._
object TypeConverter {
val defaultMirror = runtimeMirror(getClass.getClassLoader)
implicit val implicitConverter = scalaToJavaType(defaultMirror) _
def scalaToJavaType(mirror: Mirror)(tpe: Type): JType =
tpe.typeArgs match {
case Nil => mirror.runtimeClass(tpe.typeConstructor.typeSymbol.asClass)
case x:List[Type] =>
new ParameterizedType {
def getRawType = mirror.runtimeClass(tpe.typeConstructor.typeSymbol.asClass)
def getActualTypeArguments = x.map(t => mirror.runtimeClass(t.typeSymbol.asClass)).toArray
def getOwnerType = null
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment