Giriş
Şu satırı dahil ederiz.
Bir MethodHandles.Lookup nesnesi döndürür.
Örnek
Şöyle yaparız.
Elimizde Foo ata sınıfı olsun.
Şu satırı dahil ederiz.
import java.lang.reflect.Method;
import java.lang.invoke.*;
arrayElementVarHandle metodu
öyle yaparız
VarHandle arrayVarHandle = MethodHandles.arrayElementVarHandle(int[].class);
lookup metodu
Örnek
Şöyle yaparız.
MethodHandles.Lookup lookup = MethodHandles.lookup();
in Kullanımı
Örnek - findVarHandle
Şöyle yaparız
VarHandle PUBLIC_TEST_VARIABLE = MethodHandles .lookup() .in(VariableHandlesUnitTest.class) // Class name .findVarHandle(VariableHandlesUnitTest.class, // Class name "publicTestVariable", // Variable name int.class // Variable type );
privateLookupIn
Örnek - findVarHandle
Şöyle yaparız
VarHandle PRIVATE_TEST_VARIABLE = MethodHandles .privateLookupIn(VariableHandlesUnitTest.class, MethodHandles.lookup()) .findVarHandle(VariableHandlesUnitTest.class, "privateTestVariable", int.class);
unreflectSpecial Kullanımı
ÖrnekElimizde Foo ata sınıfı olsun.
public class Foo {
public void doit() {
System.out.println("good");
}
}
Bu sınıftan kalıtan Bar sınıfı olsunpublic class Bar extends Foo {
public void doit() {
System.out.println("bad");
}
}
Foo sınıfının doIt () metoduna erişmek için şöyle yaparız.Bar b = new Bar();
Method m = Foo.class.getDeclaredMethod("doit", new Class[]{});
MethodHandle h = MethodHandles.lookup().unreflectSpecial(m, Bar.class);
h.invoke(b);
Hiç yorum yok:
Yorum Gönder