Want to win a PS4? Go Premium and enter to win our High-Tech Treats giveaway. Enter to Win

x
?
Solved

Method static variables

Posted on 2000-04-20
7
Medium Priority
?
253 Views
Last Modified: 2013-11-23
Why aren't there static variables in methods in Java like there are in C++? Is that against OO design?
0
Comment
Question by:Sasha_Mapa
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 2
  • 2
7 Comments
 
LVL 3

Expert Comment

by:Laminamia063099
ID: 2734774
C++ static variables are against good design in general.  In C++ they are used to track changes or values from one method call to the next.  This is bad design because the same call to the method with the same parameters and same class variable values can have different results because a static method variable has different values.

In good program design, the same call to a class method with the same parameters and the same instance values should always produce the same result.  C++ static method variables break this design constraint and code becomes unpredictable.

Laminamia :)
0
 
LVL 16

Accepted Solution

by:
heyhey_ earned 20 total points
ID: 2734823
in C (forget C++) you have functions & static variables to keep some state between function calls.

in Java you have Objects with methods and fields which keep the object state between method calls :)
0
 
LVL 7

Author Comment

by:Sasha_Mapa
ID: 2734907
Ok, I see.
Here is a simplification of the case when the need for a method static variable arised:
I wanted to get lots of images, add them to a media tracker and then wait for them to load. I didn't want to repeat the same code of

myImage46 = getImage(getCodeBase(),"imagename.gif");
imageTracker.addImage(myImage,46);

many times so I wrote a method that would take the name of the image and the MediaTracker as arguments and would return the Image having added it to the MediaTracker. The problem is that I don't know the number of the image from within that method, and a static variable (a static variable in that method) which would increase by 1 every time the method would be called seemed the right way to go here. Not being able to use that I had to add a private instance variable to my applet. So I ended up adding an instance variable which did not represent any actual state of my applet. That sounds like bad OO design too...no?
0
VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

 
LVL 16

Expert Comment

by:heyhey_
ID: 2734950
if method that loads images is part of your applet, than the information about how many images are loaded is part of that applet too :)

if you put this method in some specila ImageManager object (which can be implemented as Singleton), this field will be member of that object.

there is no such thing as 'method with state' - only object have state.

(in C you have functions with state)
0
 
LVL 7

Author Comment

by:Sasha_Mapa
ID: 2735030
LOL, I see what you mean now...
What's a Singleton? A static object shared between all applications?
0
 
LVL 3

Expert Comment

by:Laminamia063099
ID: 2735266
A Singleton object only is instantiated once.  It does this by controlling it's creation.  This is important because anyone who has a handle to the singleton object has a handle to the same object.  You have to make the constructor private/protected and provide a method that returns a handle to the instance:

class Singleton {
  protected static handleToInstance = null;
  protected Singleton(){}
  public getInstance (){
     if (handleToInstance == null)
          handleToInstance = new Singleton();
     return handleToInstance;
  }
}

It's great when used in appropriate areas, like heyhey's suggestion.

Laminamia
0
 
LVL 7

Author Comment

by:Sasha_Mapa
ID: 2735287
Cool! I'll see whether it fits somewhere in my app. Thanks a lot guys.
0

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Java had always been an easily readable and understandable language.  Some relatively recent changes in the language seem to be changing this pretty fast, and anyone that had not seen any Java code for the last 5 years will possibly have issues unde…
This was posted to the Netbeans forum a Feb, 2010 and I also sent it to Verisign. Who didn't help much in my struggles to get my application signed. ------------------------- Start The idea here is to target your cell phones with the correct…
Viewers will learn about if statements in Java and their use The if statement: The condition required to create an if statement: Variations of if statements: An example using if statements:
This theoretical tutorial explains exceptions, reasons for exceptions, different categories of exception and exception hierarchy.
Suggested Courses

610 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question