What is the reason behind "non-static method cannot be referenced from a static context"?

DragonBorn picture DragonBorn · Nov 14, 2008 · Viewed 694.1k times · Source

The very common beginner mistake is when you try to use a class property "statically" without making an instance of that class. It leaves you with the mentioned error message:

You can either make the non static method static or make an instance of that class to use its properties.

Why? I am not asking for solutions. I would be grateful to know what is the reason behind it. The very core reason!

private java.util.List<String> someMethod(){
    /* Some Code */
    return someList;            
}

public static void main(String[] strArgs){          
     // The following statement causes the error. You know why..
    java.util.List<String> someList = someMethod();         
}

Answer

Brian Knoblauch picture Brian Knoblauch · Nov 14, 2008

You can't call something that doesn't exist. Since you haven't created an object, the non-static method doesn't exist yet. A static method (by definition) always exists.