25 Mart 2019 Pazartesi

Lang3 FieldUtils Sınıfı

Giriş
Şu satırı dahil ederiz.
import org.apache.commons.lang3.reflect.FieldUtils;
Bu sınıf target olarak hem Object hem de Class alabiliyor. Bu sınıfın en kötü tarafı verilen parametre ile Field tipinin aynı olması gerekmesi. Örneğin parametre string ve field integer ise ikisi arasında otomatik dönüşüm yapmıyor.

getAllFields metodu
Ata sınıflar da dahil tüm public/private tüm field'ları array şeklinde döner.

getAllFieldsList metodu
Ata sınıflar da dahil tüm public/private tüm field'ları List şeklinde döner.

getDeclaredField
Sadece belirtilen sınıf içinde field araması yapar.

getField metodu
Ata sınıflar da dahil field araması yapar. Şöyle yaparız.
Object object = ...;
Field field   = FieldUtils.getField(object.getClass(), "count", true);
getFieldsWithAnnotation metodu
Ata sınıflar da dahil belirtilen anotasyona sahip public/private tüm field'ları array şeklinde döner.

getFieldsListWithAnnotation metodu
Ata sınıflar da dahil belirtilen anotasyona sahip public/private tüm field'ları liste şeklinde döner.

readField
Şöyle yaparız.
Object value = FieldUtils.readField(entity, fieldName, true);
writeDeclaredField metodu
Şöyle yaparız.
FieldUtils.writeDeclaredField(object, "fieldName", "fieldValue");
writeDeclaredStaticField metodu
Sınıfın kendi içinde tanımlı static alana değer atamak içindir. Örnek ver

writeStaticField metodu
Sınıfın kendi içinde veya atasından tanımlı static alana değer atamak içindir. Örnek ver

writeField metodu
İmzası şöyle.
FieldUtils.writeField(Object target, String fieldName, Object value, boolean forceAccess)
Örnek
Elimizde şöyle bir kod olsun
public static class Bookstore {
  private  PaymentService paymentService;
  ...
}
Şöyle yaparız.
Bookstore bookstore = new Bookstore();

//Just one line to inject the field via reflection
FieldUtils.writeField(bookstore, "paymentService",new Paypal(), true);

Hiç yorum yok:

Yorum Gönder