给定Type,创建包含它的Option Type

Cor*_*ein 1 reflection scala

给定一个Type命名inner,我想创建一个新的Type,表示Option包含与...相同类型的类型inner.

例如,执行此操作的方法的签名可能类似于:

def createOptionType(inner: Type): Type = {
  typeOf[Option[inner]] // this line is pseudocode
}
Run Code Online (Sandbox Code Playgroud)

这个答案有部分帮助,但是使用了泛型方法,而在这种情况下,我传递了一个具体类型,使泛型不可用.

Kol*_*mar 5

你可以用scala.reflect.runtime.universe.appliedType它:

import scala.reflect.runtime.universe._

def createOptionType(inner: Type): Type = 
  appliedType(typeOf[Option[_]], inner)
Run Code Online (Sandbox Code Playgroud)