Я пишу плагин компилятора Java для добавления простого класса с именем MyClass
в некоторые классы моего проекта (что-то вроде lombok). Мне удалось сделать это, написав приведенный ниже код (вы можете найти общий код здесь ):
TreeMaker maker = TreeMaker.instance(context);
Names symbolsTable = Names.instance(context);
JCTree.JCClassDecl myClass = maker
.at(((JCTree) node).pos)
.ClassDef(maker.Modifiers(Flags.PUBLIC | Flags.STATIC | Flags.FINAL),
symbolsTable.fromString("MyClass"),
List.nil(),
null, // replace Here by ?
List.nil(),
List.nil()
);
((JCTree.JCClassDecl) node).defs = ((JCTree.JCClassDecl) node).defs.append(myClass);
Код до этого сгенерирует:
public static class MyClass {
}
Теперь я хочу MyClass
расширить другой параметризованный класс:
public static class MyClass extends AnotherClass<Param1, Param2>{
}
Я не знаю, как это сделать!
Все, что я знаю, это изменить 4-й параметр ClassDef
метод от null
до JCExpression
.
Любая помощь приветствуется.