• Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

non-static method cannot be referenced from a static context

 
Dustin Schreader
Ranch Hand
Posts: 74
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I'm getting this error

I know that I can't get to the non static method in that class so how do I use it?mainProgVideoStore.java:80: non-static method newCVideo(java.lang.String,int) cannot be referenced from a static context
Customer.newCVideo(title, vAmount);



And this is the method I want to use. in my Customer class
 
Mohamed Sanaulla
Saloon Keeper
Posts: 3159
33
Google App Engine Java Ruby
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
You have a non static method- newCVideo in Customer class- So to access this you need to create an instance of Customer Class. Or you have to declare the method as static in Customer class.
 
Dustin Schreader
Ranch Hand
Posts: 74
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
When you say I have to create an instance of Customer Class do you mean something like this
 
Rob Spoor
Sheriff
Pie
Posts: 20545
56
Chrome Eclipse IDE Java Windows
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Yes, but you've already done that:
 
Mohamed Sanaulla
Saloon Keeper
Posts: 3159
33
Google App Engine Java Ruby
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
So if you have an instance method (or a non static method) - How do you access that method? Via the class name or via the instance name?
 
Rob Spoor
Sheriff
Pie
Posts: 20545
56
Chrome Eclipse IDE Java Windows
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Instance name.
 
Dustin Schreader
Ranch Hand
Posts: 74
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
So now I have to make the newCVideo visible I have to make it static, ok well when I try that the compiler doesn't like that either and gives me the same error message because I'm using other nonstatic methods in that method. Would I have to make all of those methods static too?
 
Mohamed Sanaulla
Saloon Keeper
Posts: 3159
33
Google App Engine Java Ruby
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
You have created an Instance of Customer in line 12. You can used that to invoke the method. Rarely do we use static methods.
 
Dustin Schreader
Ranch Hand
Posts: 74
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
How do I use it because I thought I already was when I did the Customer.newCVList.....
 
Mohamed Sanaulla
Saloon Keeper
Posts: 3159
33
Google App Engine Java Ruby
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Ok, let me take a simpler example (your code is huge to explain).


So you can see in the above code- how instance method and static method are accessed. So in your context- you should be using the instance newCVideo created in line 12.

PS: This is not a fully working code- Made it simpler to understand for the OP.

Update: I have been talking about the line 80 in mainProgVideoStore. Because that's where the exception is seen.

 
Dustin Schreader
Ranch Hand
Posts: 74
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
so this works only because you put my in front of class Customer?
 
Mohamed Sanaulla
Saloon Keeper
Posts: 3159
33
Google App Engine Java Ruby
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Dustin Schreader wrote:so this works only because you put my in front of class Customer?


myCustomer is the name of the Customer instance- It can be anything- ourCustomer, customer, theCustomer, oneCustomer (any name which doesnt violate the naming convention, is not a keyword,reserved word and not the name of the Class).

In your case- You have a non-static method- newCVideo in Customer class. So to call/invoke this method(line 80) you would have to use an instance of Customer class (which you have created in line 12 of mainProgVideoStore). So the line 80 would now be:


Note: Pretty confusing to have the method and object name to be similar.
 
Dustin Schreader
Ranch Hand
Posts: 74
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
ok I understand, to lessen the confusion I changed it to myCustomer instead, thank you!
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic