fork download
  1. public class Main {
  2.  
  3. static class Foo {
  4. public void foo() {}
  5. private void privateFoo() {}
  6. }
  7.  
  8. static class Bar extends Foo {
  9. public void bar() {}
  10. private void privateBar() {}
  11. }
  12.  
  13. public static void main(String[] args) throws java.lang.Exception {
  14. printBoth("Main$Foo", "foo");
  15. printBoth("Main$Foo", "privateFoo");
  16. System.out.println();
  17. printBoth("Main$Bar", "foo");
  18. printBoth("Main$Bar", "privateFoo");
  19. printBoth("Main$Bar", "bar");
  20. printBoth("Main$Bar", "privateBar");
  21.  
  22. }
  23.  
  24. private static void printBoth(String clsName, String mtName) {
  25. printGetDeclaredMethod(clsName, mtName);
  26. printGetMethod(clsName, mtName);
  27. }
  28.  
  29. static void printGetDeclaredMethod(String clsName, String mtName) {
  30. try {
  31. System.out.println("getDeclaredMethod: " + Class.forName(clsName).getDeclaredMethod(mtName));
  32. } catch (Exception e) {
  33. System.out.println("getDeclaredMethod: " + e);
  34. }
  35. }
  36. static void printGetMethod(String clsName, String mtName) {
  37. try {
  38. System.out.println("getMethod: " + Class.forName(clsName).getMethod(mtName));
  39. } catch (Exception e) {
  40. System.out.println("getMethod: " + e);
  41. }
  42. }
  43. }
Success #stdin #stdout 0.08s 380160KB
stdin
Standard input is empty
stdout
getDeclaredMethod: public void Main$Foo.foo()
getMethod:         public void Main$Foo.foo()
getDeclaredMethod: private void Main$Foo.privateFoo()
getMethod:         java.lang.NoSuchMethodException: Main$Foo.privateFoo()

getDeclaredMethod: java.lang.NoSuchMethodException: Main$Bar.foo()
getMethod:         public void Main$Foo.foo()
getDeclaredMethod: java.lang.NoSuchMethodException: Main$Bar.privateFoo()
getMethod:         java.lang.NoSuchMethodException: Main$Bar.privateFoo()
getDeclaredMethod: public void Main$Bar.bar()
getMethod:         public void Main$Bar.bar()
getDeclaredMethod: private void Main$Bar.privateBar()
getMethod:         java.lang.NoSuchMethodException: Main$Bar.privateBar()