সাধারণ ক্ষেত্রে ক্ষেত্রগুলির জন্য আপনার ব্যক্তিগত অ্যাক্সেস রয়েছে, তাই আপনি প্রতিবিম্বে গেটফিল্ড ব্যবহার করতে পারবেন না। এর পরিবর্তে আপনার 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()
)
);
}