クラス名でクラスのパラメータを見つけ、私はこのような何かを持っている:私はマクロ注釈に取り組んでいます
def findClass(className: String) : ClassSymbol = {
val tree = c.typecheck(c.parse(s"??? : ${className}"));
return tree.tpe.typeSymbol.asClass;
}
問題はclassName
がList
のようなものであるとき、それは明らかにそれので文句ということですパラメータが必要です。 List[String]
の場合は問題ありません。
正直なところ、リストのジェネリック型が不変であると考えると、classOf[List]
が受け入れられないなどの理由は完全にはわかりません。 classOf[List[String]]
とclassOf[List[Integer]]
を実行すると、同じクラスが返されます。
したがって、私のメソッドfindClass
は、パラメータを持たないクラスまたは不変のパラメータを持つクラスを常に受け取ると仮定すると、どのようにしてValDef
の型チェックを行うことができますか?
はい、私はこれを行っている方法です現時点では、しかし、試してみて、エラーは非常に醜いです。たぶん抽出器やラムダ型関数を使った方が良い解決策が必要です。しかし、いずれにしても傾けることはできません。 – lqbweb