File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
http://aspose.com/file-tools
The moose likes Beginning Java and the fly likes non-static method cannot be referenced from a static context Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "non-static method cannot be referenced from a static context" Watch "non-static method cannot be referenced from a static context" New topic
Author

non-static method cannot be referenced from a static context

Dustin Schreader
Ranch Hand

Joined: May 25, 2009
Posts: 74
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

Joined: Sep 08, 2007
Posts: 3068
    
  33

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.


Mohamed Sanaulla | My Blog
Dustin Schreader
Ranch Hand

Joined: May 25, 2009
Posts: 74
When you say I have to create an instance of Customer Class do you mean something like this
Rob Spoor
Sheriff

Joined: Oct 27, 2005
Posts: 19679
    
  18

Yes, but you've already done that:


SCJP 1.4 - SCJP 6 - SCWCD 5 - OCEEJBD 6
How To Ask Questions How To Answer Questions
Mohamed Sanaulla
Saloon Keeper

Joined: Sep 08, 2007
Posts: 3068
    
  33

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

Joined: Oct 27, 2005
Posts: 19679
    
  18

Instance name.
Dustin Schreader
Ranch Hand

Joined: May 25, 2009
Posts: 74
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

Joined: Sep 08, 2007
Posts: 3068
    
  33

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

Joined: May 25, 2009
Posts: 74
How do I use it because I thought I already was when I did the Customer.newCVList.....
Mohamed Sanaulla
Saloon Keeper

Joined: Sep 08, 2007
Posts: 3068
    
  33

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

Joined: May 25, 2009
Posts: 74
so this works only because you put my in front of class Customer?
Mohamed Sanaulla
Saloon Keeper

Joined: Sep 08, 2007
Posts: 3068
    
  33

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

Joined: May 25, 2009
Posts: 74
ok I understand, to lessen the confusion I changed it to myCustomer instead, thank you!
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: non-static method cannot be referenced from a static context