Giriş
Şu satırı dahil ederiz.
Elimde şöyle bir sınıf olsun
Objet tipinden sonuç döner. Doğru tipe örneğin Double, Int gibi cast etmek gerekir. Şöyle yaparız.
Şöyle yaparız.
Örnek
Elimizde final alanı olan bir sınıf olsun
Şöyle yaparız.
Şu satırı dahil ederiz.
import java.lang.reflect.Field;
constructorElimde şöyle bir sınıf olsun
public class Foo
{
private int theAnswer = 42;
....
}
Şöyle yaparız.Field field
= Foo.class.getDeclaredField ("theAnswer");
get metoduObjet tipinden sonuç döner. Doğru tipe örneğin Double, Int gibi cast etmek gerekir. Şöyle yaparız.
Foo foo = ...;
Field field = Foo.class.getDeclaredField( "theAnswer" );
field.setAccessable (true);
Object value = field
.get (foo);
Eğer alan static ise sanırım şöyle yaparız.Field field = ...;
Object value = field.get(null);
getAnnotations metoduŞöyle yaparız.
for (Annotation annotation : field.getAnnotations()) {
...
}
set metoduÖrnek
Elimizde final alanı olan bir sınıf olsun
public class BasicHolder {
private final static Integer VALUE = new Integer(0);
...
}
Bu alanı değiştirmek için şöyle yapaız.private static void setStaticFieldValue(final Class obj, final String fieldName,
final Object fieldValue) {
try {
final Field field = obj.getDeclaredField(fieldName);
field.setAccessible(true);
final Field modifiersField = Field.class.getDeclaredField("modifiers");
modifiersField.setAccessible(true);
modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);
field.set(null, fieldValue);
} catch (NoSuchFieldException | IllegalAccessException e) {
...
}
}
Çağırmak için şöyle yaparız. setStaticFieldValue(BasicHolder.class, "VALUE", i);
setAccessable metoduŞöyle yaparız.
Field field = ...
field.setAccessible(true);
Hiç yorum yok:
Yorum Gönder