1

私はマクロ注釈に取り組んでおり、次のようなものがあります。

def findClass(className: String) : ClassSymbol = {
  val tree = c.typecheck(c.parse(s"??? : ${className}"));
  return tree.tpe.typeSymbol.asClass;
}

問題は、 whenclassNameが のようなものである場合List、パラメーターが必要なため、明らかに不平を言うことです。であればList[String]問題ありません。

正直なところ、classOf[List]リストのジェネリック型が不変であることを考慮して、たとえば が受け入れられない理由がよくわかりません。classOf[List[String]]と を実行するとclassOf[List[Integer]]、同じクラスが返されます。

findClassしたがって、私のメソッドが常にパラメーターなしのクラス、または不変パラメーターを含むクラスを受け取ると仮定すると、どのようにタイプチェックできValDefますか?

4

1 に答える 1