Я работаю на макро аннотацию, и у меня есть что-то вроде этого:Найти параметры класса имя класса
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