fork download
  1. /* package whatever; // don't place package name! */
  2.  
  3. import java.util.*;
  4. import java.lang.*;
  5. import java.lang.reflect.*;
  6. import java.io.*;
  7.  
  8. /* Name of the class has to be "Main" only if the class is public. */
  9. class Ideone
  10. {
  11. private static Method tryFindInterfaceMethod(Method m) throws Exception {
  12. Class dc = m.getDeclaringClass();
  13. for (Class bc : dc.getInterfaces()) {
  14. try {
  15. return bc.getMethod(m.getName(), m.getParameterTypes());
  16. } catch (NoSuchMethodException ignore) {
  17. }
  18. }
  19. return m;
  20. }
  21. public static void main (String[] args) throws java.lang.Exception
  22. {
  23.  
  24. Map<String,Object> someMap = new LinkedHashMap<>();
  25. someMap.put("someKey", "someValue");
  26. Map.Entry<String,Object> entry = someMap.entrySet().iterator().next();
  27.  
  28. System.out.println(entry.getValue()); // normal access is fine
  29.  
  30. Method getter = tryFindInterfaceMethod(entry.getClass().getMethod("getValue"));
  31. System.out.println(getter.invoke(entry)); //2
  32.  
  33.  
  34. }
  35. }
Success #stdin #stdout 0.1s 27808KB
stdin
Standard input is empty
stdout
someValue
someValue