Я хочу генерировать класс для GraphQL через Javassist, поэтому имена параметров в конструкторе важны или положительны для добавления аннотации в параметры. < /p>
Я пытаюсь генерировать класс, который выглядит так: < /p>
public class Parent extends Artifact {
private final String parent;
public Parent(Integer id, String name) {
super("parent", id, name);
}
}
< /code>
Но не может найти способ установить эти имена параметров: < /p>
Я всегда получаю это: < /p>
public class Parent extends Artifact {
private final String parent;
public Parent(Integer var1, String var2) {
super("parent", var1, var2);
}
}
< /code>
Альтернативно возможно, чтобы генерировать этот вид кода?import io.leangen.graphql.annotations.GraphQLInputField;
public class Parent extends Artifact {
private final String parent;
public Parent(@GraphQLInputField(name = "id") Integer var1, @GraphQLInputField(name = "name") String var2) {
super("parent", var1, var2);
}
}
< /code>
Я был бы признателен за вашу помощь. < /p>
Я попытался использовать этот код для добавления аннотации: < /p>
CtConstructor constructor = CtNewConstructor.make(
"""
public %s(
Integer id,
String name
) {
super("parent", id, name);
}
""".formatted(ToCamelCase.convert(typeName)), newClass);
ConstPool cpool = newClass.getClassFile().getConstPool();
ParameterAnnotationsAttribute attr = new ParameterAnnotationsAttribute(cpool, AnnotationsAttribute.visibleTag);
Annotation graphQLInputField = new Annotation("io.leangen.graphql.annotations.GraphQLInputField", cpool);
graphQLInputField.addMemberValue("name", new StringMemberValue("id", cpool));
constructor.getParameterAnnotations()[0] = attr.getAnnotations(); // Index 0 for the second parameter
newClass.addConstructor(constructor);
Подробнее здесь: https://stackoverflow.com/questions/794 ... -javassist
Добавить имя или аннотация параметра в параметр в сгенерированный класс через Javassist ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение