Добавить имя или аннотация параметра в параметр в сгенерированный класс через JavassistJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Добавить имя или аннотация параметра в параметр в сгенерированный класс через Javassist

Сообщение Anonymous »

Я хочу генерировать класс для 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»