सामान्य स्थिति में आपके पास खेतों के लिए निजी पहुंच है, इसलिए आप प्रतिबिंब में getFields का उपयोग नहीं कर सकते हैं । इसके बजाय आपको getDeclaredFields का उपयोग करना चाहिए
तो, सबसे पहले, आपको पता होना चाहिए कि क्या आपके कॉलम एनोटेशन में रनटाइम रिटेंशन है:
@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()
)
);
}