Calling private method inside private class inside Inner class

ArnabSaha :

Need to call a private method foo() of the class Inner.Private, where Private is an inner private class from the main method of the main class. The code is something like this:

public class MainClass {
    public static void main(String[] args) throws Exception {
        // Need to invoke foo() from here
        } 

    static class Inner {
        private class Private {
            private String foo() {
                return "someString";
            }
        }
    }
}

I was trying to get this using Java Reflection, but I am facing issues from this approach.

My attempt to invoke the foo() is:

        Inner innerClassObject = new Inner();
        Method method = Inner.Private.class.getDeclaredMethod("foo");
        method.setAccessible(true);
        method.invoke(innerClassObject);

But this gives a NoSuchMethodException:

Exception in thread "main" java.lang.NoSuchMethodException: 
default.MainClass$Inner$Private.foo()
    at java.lang.Class.getDeclaredMethod(Unknown Source) 

I am stuck at this point, is this achievable by Java Reflection, or any other way?

crizzis :

Ummm... why not simply new Inner().new Private().foo()?

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=345006&siteId=1