25 Mart 2019 Pazartesi

MethodUtils Sınıfı

getAccessableMethod metodu
İmzası şöyle. Üst sınıfları dolaşır.
public static Method getAccessibleMethod(
        Class clazz,
        String methodName,
        Class[] parameterTypes)
getMatchingMethod metodu
Belirtilen parametrelere en iyi uyan Method nesnesini döndürür. Sanırım üst sınıfları dolaşır. Ancak Method'un accessable olup olmamasına bakmaz.

invokeExactMethod metodu
İmzası şöyle.
public static Object invokeExactMethod(
        Object object,
        String methodName,
        Object[] args)
        throws
        NoSuchMethodException,
        IllegalAccessException,
        InvocationTargetException
İmzası şöyle.
public static Object invokeExactMethod(
        Object object,
        String methodName,
        Object[] args,
        Class[] parameterTypes)
        throws
        NoSuchMethodException,
        IllegalAccessException,
        InvocationTargetException
invokeMethod metodu - object + method name + args
Üçüncü parametre metod imzasındaki parametredir.
Örnek
getter metod için şöyle yaparız.
String value = (String) MethodUtils.invokeMethod(o, "getValue", (Object[])null);
Örnek
Şöyle yaparız.
System.out.println(MethodUtils.invokeMethod("what?", "equals", new Object[] {"what?"}));
invokeStaticMethod metodu
MethodUtils.geMatchingMethod() ile parametrelere uyan metod bulunabilir.

Örnek
Method private ise önce setAccessable(true) yapmak gerekir. Sonra şöyle yaparız.
Service.class
  .getDeclaredMethod("getNightStart", LocalTime.class, LocalTime.class)
  .setAccessible(true);
MethodUtils.invokeStaticMethod(Service.class, 
   "getNightStart", LocalTime.of(0, 0), LocalTime.of(8, 0)); 

Hiç yorum yok:

Yorum Gönder