В общем случае у вас есть частный доступ к полям, поэтому вы НЕ МОЖЕТЕ использовать getFields в отражении. Вместо этого вы должны использовать getDeclaredFields
Итак, во-первых, вы должны знать, имеет ли ваша аннотация Column сохранение времени выполнения:
@Retention(RetentionPolicy.RUNTIME)
@interface Column {
}
После этого вы можете сделать что-то вроде этого:
for (Field f: MyClass.class.getDeclaredFields()) {
Column column = f.getAnnotation(Column.class);
// ...
}
Очевидно, вы хотели бы что-то сделать с полем - установить новое значение, используя значение аннотации:
Column annotation = f.getAnnotation(Column.class);
if (annotation != null) {
new PropertyDescriptor(f.getName(), Column.class).getWriteMethod().invoke(
object,
myCoolProcessing(
annotation.value()
)
);
}
Итак, полный код может выглядеть так:
for (Field f : MyClass.class.getDeclaredFields()) {
Column annotation = f.getAnnotation(Column.class);
if (annotation != null)
new PropertyDescriptor(f.getName(), Column.class).getWriteMethod().invoke(
object,
myCoolProcessing(
annotation.value()
)
);
}