2012-06-11 3 views
1

Я хочу написать свой собственный валидатор и генератор кода для моих компонентов. Я определяю аннотации и аннотирую свои поля с ними. Когда я их проверки:Разработка с учетом аннотаций

public boolean validate(Object obj) { 
    Class clazz = obj.getClass(); 
    for (Field field : clazz.getDeclaredFields()) { 
     for (Annotation annotation : field.getAnnotations()) { 
      ...//What to do here 
     } 
    } 
    return false; 
} 

т.е. моей аннотации @NotEmpty

Должен ли я идти как if else if else ... или есть другой короткий путь для него (и что использовать для сравнения, что в аннотации, что я смотрю т.е. @NotNull -> с annotation.equals ("NotNull"))? Я имею в виду, как это можно реализовать. С другой стороны, проект Ломбок имеет аннотацию, как, что:

@Getter @Setter 

Как генерировать добытчика и сеттеры динамически (или до компиляции) для моих классов (я хочу, чтобы реализовать только с Java без каких-либо других библиотек)?

+0

** Lombok **, нет Lombak! - Я вижу этот второй раз сегодня – dantuch

ответ

2

Я думаю, что вам лучше искать нужные вам аннотации, а не цитировать все аннотации. Вы можете увидеть, если аннотация присутствует так:

field.isAnnotationPresent(NotEmpty.class) 

А чтобы получить аннотацию и проверить его элементы, которые вы можете использовать:

Annotation notEmpty = field.getAnnotation(NotEmpty.class) 

Чтобы изменить классы во время выполнения я думаю this является то, что вы «Ищем. Here вы можете найти учебное пособие для ASM.

+0

Это хорошо. Как насчет генерации кода с отражением? – kamaci

+0

проверить обновленный ответ, пожалуйста – tibtof

Смежные вопросы