Welcome to the Treehouse Community
Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.
Start your free trialBrendan Passey
999 Pointsnon-static method getCowName() cannot be referenced from a static context
I am trying to call Cow.getCowName() from Main.java (within the main method). and get this error. Here's Cow.java
class Cow { private final String name;
public Cow (String name) { this.name = name; }
public String getCowName() { return name; } }
Here's Main.java import java.io.Console; public class Main {
public static void main(String[] args) { Console console = System.console();
Cow cow = new Cow("Larry");
System.out.printf("The new Cow's name is %s",
Cow.getCowName());
}
} I googled it and got this answer - A non-static method is dependent on the object. It is recognized by the program once the object is created. But a static method can be called before the object creation. Hence you cannot make the reference.
Which I get the gist of but what constitutes calling a method from a non static context? How do I fix my code so I am not doing that? The only thing I can think of is that it's within the main method which is indeed static but I called a bunch of methods precicely like this in the hangman project and got no problems.
Can someone clarify this for me please?
3 Answers
Steven Parker
231,271 PointsNon-static methods are called on an instance, where static methods are called on the class itself. You created an instance named "cow" (little "c"), but attempted to call the method on the class "Cow" (capital "C").
Just fix the spelling:
cow.getCowName());
Brendan Passey
999 PointsDoh, yep now I see it I feel silly. Thanks Steven.
Nikola Vichev
1,668 PointsHi, guys, I keep getting this error ...help, please
import java.io.Console;
public class Main {
public static void main(String[] args) { Console console = System.console();
Cow cow = new Cow("Larry");
System.out.printf("The cow's name is %s,
cow.getCowName());
} }
Main.java:11: error: illegal start of expression
cow.getCowName());
^
Main.java:11: error: ';' expected
cow.getCowName());
Aaron Choe
1,505 PointsHey Nikola, you're forgetting a quotation mark :)