Как я могу создать пользовательскую аннотацию Java, такую ​​как Lombok's @Getter/ @Setter, но с помощью пользовательскихJAVA

Программисты JAVA общаются здесь
Anonymous
Как я могу создать пользовательскую аннотацию Java, такую ​​как Lombok's @Getter/ @Setter, но с помощью пользовательских

Сообщение Anonymous »

Я пытаюсь создать пользовательскую аннотацию в Java, которая работает как @Getter и @Setter's Lombok, но с пользовательскими методами методов для конкретных вариантов использования.

Код: Выделить всё

@DecryptGetter
private String sensitiveData;
< /code>
Это генерирует методы, такие как: < /p>
public void setSensitiveData(String data) {
this.sensitiveData = CryptoUtils.encrypt(data);
}

public String getSensitiveData() {
return CryptoUtils.decrypt(this.sensitiveData);
}
< /code>
Ключевое отличие от Lombok заключается в том, что эти методы должны вызывать пользовательскую статическую логику (cryptoutils.encrypt () /decrypt ()), а не просто аксессов.@Retention(RetentionPolicy.SOURCE)
@Target(ElementType.FIELD)
public @interface EncryptSetter {}

@Retention(RetentionPolicy.SOURCE)
@Target(ElementType.FIELD)
public @interface DecryptGetter {}
Я также реализовал процессор аннотации, который обнаруживает эти аннотации и генерирует отдельный класс с методами Getter/Setter, содержащими пользовательскую логику. Тем не менее, это не идеально, поскольку методы не добавляются в исходный класс - вместо этого они живут в отдельном сгенерированном классе, который побеждает цель. часто. Поддержание Getters и Setters вручную является подверженным ошибкам и трудоемким. /> Вопрос:
Можно ли создать пользовательскую аннотацию, такую ​​как @Encryptsetter, который генерирует метод внутри одного и того же класса (например, Lombok)? /> Модификация AST (например, плагины Javac)?
APIS расширения Lombok?
Библиотеки манипуляции с байт-кодом, такие как Bytebuddy или Javassist?
Есть ли какие-либо примеры с открытым исходным кодом или коборные для этого? необходимо
предпочитаю легкие и поддерживаемые решения < /p>

Подробнее здесь: https://stackoverflow.com/questions/796 ... r-but-with

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