I'm still new to Java and I tried to create an inner class and call the method inside main. There is a compilation error saying
Non static variable - This cannot be referenced from a static context
Please help
class Class1{
    public static void main(String args []){
        Class2 myObject = new Class2();
        myObject.newMethod();
    }
    public class Class2{
        public void newMethod(){
            System.out.println("Second class");
        }
    }
}
                An inner class needs a reference to an instance of the outer class in order to be constructed. If your class doesn't logically need that, then use the static modifer to make it "just a nested class":
public static class Class2 {
    public void newMethod(){
        System.out.println("Second class");
    }
}
EDIT: To create an instance of Class2 as an inner class, you could use something like:
Class1 outer = new Class1();
Class2 myObject = outer.new Class2();
Or more briefly:
Class2 myObject = new Class1().new Class2();
... but unless you really want a reference to an enclosing instance, it's much simpler to make the class just a nested class.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With