Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
562 views
in Technique[技术] by (71.8m points)

class - Inner classes in Java - Non static variable error

Im still new to java and i tried to create a inner class and call the method inside main. But theres 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");
        }
    }
}
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...