Polymorphismus with static variables?

Hi,
I just have a vatiable which stores some speficic data of the class and one method to return this value. If I declare the code like below getName always return "Superclass" until I override getName with the same body (so it's exactly the same method) in the subclass.
Cause of this Redunancy, I want to know if there is a way to avoid this?
Even using return this.name has not the desired effect.
Thanks a lot in advance.
Greetings Michael
Superclass
private static final String name = "Superclass";
public  String  getName(){
  return name;
}Subclass
private static final String name = "Subclass";

There is no way Superclass method getName() could access Subclass static member name, unless explicitely.
In your case, the returned value of Superclass' getName() method is fixed at compilation time.
As you didn't override the getName() method in Subclass, the Superclass getName() will be invoked for any instance of Superclass or Subclass.
If you override the getName() method in Subclass, the choice of which method to invoke will be done at runtime.
To make things easier to understand, always access static members in a static way, i.e. prefix static member access with its class name:class Superclass {
  private static final String name = "Superclass";
  public  String  getName(){
    return Superclass.name;
}(this code is equivalent to yours)

Similar Messages

  • Runtime error in linking with static variables....

    Hi,
    I am building a shared library which includes a compiled object generated from a class containing the static variables only and also I have another version of same class with same & some new static variables in it and using that to generate another shared library. Now when I tried to run a program
    which links with both the library it core dumps when it tries to return from the program i.e when it finishes.
    Can someone please help me explain why my program is behaving like that?? Can duplicate inculsion of static variables in different scope can cause problem ?? How can this be avoided ?
    Also please be advised that the class with static variables gets generated at the compile time using a script which uses a DTD whose version (specification) can be different in both the libraries therefore I can't just seperate the common stuff into one class and specific into another.
    Thanks.
    Rajeev.

    Not to worry...found the answer in another post. Seems like patches need to applied to the OS.

  • How to import files with static variables into a block with methods?

    i have a problem. is it possible to import files with static variables into tags like
    <%!
    //here i want to import a file named settings.inc
    //whitch is used to set jdbc constants like url,driver,...
    private void method() {
    private void method2() {
    %>
    <%@include file="xy"%>//dosn�t work above
    //only in <%%>tag

    This should be done using either the Properties class or ResourceBundle. Ex.
    <%
    ResourceBundle resBun = ResourceBundle.getBundle(String resource);
    String username = resBun.getString("username");
    String password = resBun.getString("password");
    // etc
    %>

  • Implement interface with static variable

    Hello all
    I want to create a class that has a static variable. In this class I also want to create a static function to change this static value. So I donot have to create any object when change the static variable.
    My problem is that this class should implement an interface (using facade pattern). As it implements an interface, it cannot have any static function in it.
    How I can overcome this problem. please help
    Many thanks
    shuhu

    My problem is that this class should implement an interface (using facade pattern).
    As it implements an interface, it cannot have any static function in it.Any class (including one that implements an interface) can have static methods.
    Do you mean you want the static method to be part of the interface? In this case you have a problem. Perhaps you should use an abstract class instead of an interface (the class could possibly implement the interface). Or perhaps you should rethink the need to have a static method.

  • Static variable in cluster

    Hi All,
              How does WebLogic cluster an object, EJB or servlet, with
              static variables? I mean, will the static variables in multiple
              JVMs still have a single value? Or it just can't be clustered?
              Lynch
              

    Statics are only statics per JVM and classloader. This applies to non
              clustering environments as well. If you want a singleton you have to use
              another approach.
              Tinou Bao
              www.tinou.com
              "Lynch" <[email protected]> wrote in message
              news:3b170adb$[email protected]..
              > Hi All,
              >
              > How does WebLogic cluster an object, EJB or servlet, with
              > static variables? I mean, will the static variables in multiple
              > JVMs still have a single value? Or it just can't be clustered?
              >
              > Lynch
              >
              >
              

  • Doubt on static variables.

    Hi,
    I have a class "XYZ" with static variable "x" which is incremented in the constructor of the class. I have two other classes "A" & "B" .
    In class "A" I have created two instances of "XYZ" and printed the value of x. In class B I have created one instance of class "XYZ".
    when I run class A: output is :- x = 1 , x= 2
    When I run class B: output is :- x = 1.
    My question is , In the output of the class B , why isn't the value of x 3? Why is it 1 ? Could anyone please explain.

    Are you sure you aren't running A and B from different processes? I've tried this:public class A {
        public A () {
            new XYZ ();
            new XYZ ();
    public class B {
        public B () {
            new XYZ ();
    public class XYZ {
        private static int c;
        static {
            c = 0;
        public static void printC () {
            System.out.println ("C is " + c);
        public XYZ () {
            c ++;
    public class Test {
        public static void main (String[] parameters) {
            new A ();
            XYZ.printC ();
            new B ();
            XYZ.printC ();
    }and it works fine.
    Kind regards,
      

  • Problems with static member variables WAS: Why is the static initializer instantiating my class?!

    Hi,
    I have been hunting down a NullPointerException for half a day to come to
    the following conclusion.
    My constructor calls a method which uses static variables. Since an intance
    of my class is created in the static block when the class is loaded, those
    statics are probably not fully initialized yet and the constructor called
    from the static block has those null pointer problems.
    I've considered moving the initialization of the static variables from the
    declaration to the static block. But your code is inserted BEFORE any other
    code. Therefore not solving my problem.
    Two questions:
    1) what would be a solution to my problem? How can I make sure my static
    variables are initialized before the enhancer generated code in the static
    block calls my constructor? Short of decompiling, changing the code and
    recompiling.
    2) Why is the enhancing code inserted at the beginning of the static block
    and not at the end? The enhancements would be more transparent that way if
    the static variables are initialized in the static block.
    Thanks,
    Eric

    Hi Eric,
    JDO calls the no-args constructor. Your application should regard this constructor as belonging
    primarily to JDO. For example, you would not want to initialize persistent fields to nondefault
    values since that effort is wasted by JDO's later initilization to persistent values. Typically all
    you want to initialize in the no-args constructor are the transactional and unmanaged fields. This
    rule means that you need initialization after construction if your application uses the no-args
    constructor and wants persistent fields initialized. On the other hand, if your application really
    uses constructors with arguments, and you're initializing persistent fields in the no-args
    constructor either unintentionally through field initializers or intentionally as a matter of
    consistency, you will find treating the no-args constructor differently helpful.
    On the other hand, if Kodo puts its static initializer code first as you report, then it is a bug.
    Spec Section 20.16: "The generated static initialization code is placed after any user-defined
    static initialization code."
    David Ezzio
    Eric Borremans wrote:
    >
    Hi,
    I have been hunting down a NullPointerException for half a day to come to
    the following conclusion.
    My constructor calls a method which uses static variables. Since an intance
    of my class is created in the static block when the class is loaded, those
    statics are probably not fully initialized yet and the constructor called
    from the static block has those null pointer problems.
    I've considered moving the initialization of the static variables from the
    declaration to the static block. But your code is inserted BEFORE any other
    code. Therefore not solving my problem.
    Two questions:
    1) what would be a solution to my problem? How can I make sure my static
    variables are initialized before the enhancer generated code in the static
    block calls my constructor? Short of decompiling, changing the code and
    recompiling.
    2) Why is the enhancing code inserted at the beginning of the static block
    and not at the end? The enhancements would be more transparent that way if
    the static variables are initialized in the static block.
    Thanks,
    Eric

  • Dealing with a turn based application with using a global static variable

    Hi there. I read some articles about JavaFX concurrency,so as a newbie i have to practice on it. Now i'm trying to implement a turn based application that can be played among 3-6 players. Moreover, i use a scene imported from a .fxml file and i have to update it correctly depends on some calculations of each thread (in other word players ). My main issue is, i don't wanna use a while loop which checks the state of game like;
    while( GameState != State.GAME_OVER ){
         currentPlayer = GameBoard.getNextPlayer();
         // do some actions,calculations etc.
    So, i want to use worker threads instead of this while loop. I guess using Service class for iterating and assigning the next player will be suitable instead of using the while loop and Tasks for doing each player's calculation,or waiting for some responses from Human players on UI based,however, i'm struggling with two problems.
    There should a global static variable ( like GameState which is an Enumarator ) determines the state of the game,so it should be updated and should be checked by each turn. Is there any way to do this ?
    How can i get rid off this while loop ?
    I will appreciate for every answer. Thanks anyway.

    It shouldn't make too much difference. The basic idea is that you have a model class representing your game state (the Game class in jsmith's example). When a player makes a move, you update the state of the game. Since this will result in changes to the UI, this update should be performed on the FX Application Thread.
    If the player making the move is a human player, the move will likely be made by a user action (button press or mouse click, etc); this will be handled on the FX Application thread anyway.
    When the state of the game changes so it is the turn of an "artificial" player to make a move, have the object representing the artificial player calculate its next move, and then update the game state. Since this is a response to the game state changing (it's now the turn of the artificial player), this will also be on the FX Application Thread.
    The only (slight) complexity comes if the calculation of the move for the artificial player takes a long time. You don't want to perform this long running calculation on the FX Application Thread. The cleanest way to manage this is to launch a Task which calculates the desired move, and then updates the game state when the move is ready. So, something like this:
    GameState game = ... ;
    // UI is bound to the game state.
    ExecutorService executorService = ... ;
    final Player currentPlayer = game.getCurrentPlayer() ;
    final Task<Move> calculateMoveTask = new Task<Move>() {
         @Override
         public Move call() {
              Move move = // compute next move...
              return move ;
    calculateMoveTask.setOnSucceeded(new EventHandler<WorkerStateEvent>() {
         @Override
         public void handle(WorkerStateEvent event) {
              gameState.makeMove(currentPlayer, calculateMoveTask.getValue());
    executorService.submit(calculateMoveTask);
    If you're doing more threading than that, you're probably doing it wrong... . There should also be no need for anything to be held as a "global" static variable (the idea above is the only structural modification you need to the example posted by jsmith).

  • Setting static IP with computer variables with ConfigMgr 2012 R2 + MDT 2013?

    Hi!
    So im trying to set static IP with computer variables in ConfigMgr 2012 R2 with MDT integration. Does not seem to work as expected, after installation it has DHCP enabled.
    This is my config:
    ZTINicConfig.log
    <![LOG[Property ForceCapture is now = ]LOG]!><time="14:18:29.000+000" date="03-19-2015" component="ZTINicConfig" context="" type="1" thread="" file="ZTINicConfig">
    <![LOG[Microsoft Deployment Toolkit version: 6.2.5019.0]LOG]!><time="14:18:29.000+000" date="03-19-2015" component="ZTINicConfig" context="" type="1" thread="" file="ZTINicConfig">
    <![LOG[The task sequencer log is located at X:\WINDOWS\TEMP\SMSTSLog\SMSTS.LOG. For task sequence failures, please consult this log.]LOG]!><time="14:18:29.000+000" date="03-19-2015" component="ZTINicConfig" context="" type="1" thread="" file="ZTINicConfig">
    <![LOG[ZTINicConfig Script Entered.]LOG]!><time="14:18:29.000+000" date="03-19-2015" component="ZTINicConfig" context="" type="1" thread="" file="ZTINicConfig">
    <![LOG[ PHASE = ]LOG]!><time="14:18:29.000+000" date="03-19-2015" component="ZTINicConfig" context="" type="1" thread="" file="ZTINicConfig">
    <![LOG[ Deployment Method = SCCM]LOG]!><time="14:18:29.000+000" date="03-19-2015" component="ZTINicConfig" context="" type="1" thread="" file="ZTINicConfig">
    <![LOG[ Deployment Type = NEWCOMPUTER]LOG]!><time="14:18:29.000+000" date="03-19-2015" component="ZTINicConfig" context="" type="1" thread="" file="ZTINicConfig">
    <![LOG[Capture Network Settings from local machine and write to Environment.]LOG]!><time="14:18:29.000+000" date="03-19-2015" component="ZTINicConfig" context="" type="1" thread="" file="ZTINicConfig">
    <![LOG[Query networking adapters...]LOG]!><time="14:18:29.000+000" date="03-19-2015" component="ZTINicConfig" context="" type="1" thread="" file="ZTINicConfig">
    <![LOG[Networking Adapters found! Count = 1]LOG]!><time="14:18:29.000+000" date="03-19-2015" component="ZTINicConfig" context="" type="1" thread="" file="ZTINicConfig">
    <![LOG[Property OSDAdapterCount is now = 0]LOG]!><time="14:18:29.000+000" date="03-19-2015" component="ZTINicConfig" context="" type="1" thread="" file="ZTINicConfig">
    <![LOG[ZTINicConfig processing completed successfully.]LOG]!><time="14:18:29.000+000" date="03-19-2015" component="ZTINicConfig" context="" type="1" thread="" file="ZTINicConfig">
    And I can't find any of the variables specified in ZTIGather.log. Do they only work with pure MDT or in CS.ini ?
    Any Ideas ?
    Thanks!

    Many methods to achieve the same. I've done something similar once with a small PowerShell script like this:
    http://www.petervanderwoude.nl/post/setting-a-static-ip-address-during-a-deployment-via-powershell-and-configmgr-2012/
    My Blog: http://www.petervanderwoude.nl/
    Follow me on twitter: pvanderwoude

  • How to clear the value of variable declared with STATICS keyword in FM?

    Hi All,
    I am using a standard CRM FM:CRM_CLA_RES_UPDATE_FM in that a STATICS variable is declared. In my code this STATICS varible value is populating. Iam to clear that Varible.
    How to do that.
    Thanks and Regards,
    Shabeer Ahmed,

    If you have 6.0 or up version then you will have a spiral button for your ABAP editor in you application toolbar. this is to find enhancements provided to you for standard programs. if you click on this you will get the enhancement points which you can identify and use accordingly to change/edit your STATICS variable content.
    if not, then you'll probably have to write to OSS , if you can open the code and do the required correction.

  • Error on compile - non-static variable can not be referencedfrom static con

    Error on compile happening with addButton?
    Thanks
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.JButton;
    import javax.swing.JLabel;
    import javax.swing.JTextField;
    import javax.swing.JFrame;
    public class Log implements ActionListener {
    JButton addButton;
    public static void addComponentsToPane(Container pane) {
    pane.setLayout(new GridBagLayout());
    GridBagConstraints c = new GridBagConstraints();
         c.gridy = 3;
    c.gridx = 0;
         JLabel callsignLabel= new JLabel("Callsign");
    pane.add(callsignLabel, c);
         c.gridy = 3;
    c.gridx = 1;
         JLabel nameLabel= new JLabel("Name");
    pane.add(nameLabel, c);
         c.gridy = 3;
    c.gridx = 2;
         JLabel timeLabel= new JLabel("Time");
    pane.add(timeLabel, c);
         c.gridy = 3;
    c.gridx = 3;
         JLabel dateLabel= new JLabel("Date");
    pane.add(dateLabel, c);
         c.gridy = 3;
    c.gridx = 4;
         JLabel frequencyLabel= new JLabel("Freq ");
    pane.add(frequencyLabel, c);
         c.gridy = 3;
    c.gridx = 5;
         JLabel locationLabel = new JLabel("Country/State");
    pane.add(locationLabel, c);
    c.gridy = 5;
    c.gridx = 0;
         addButton = new JButton("Add");
    pane.add(addButton, c);
         addButton.addActionListener(this);

    Thank you for the reply
    I am new to Java
    What is wrong with the way it is coded?The error message tells you what's wrong: You're trying to reference a non-static variable from a static context.
    If you don't know what that means, then click the link I provided and look at the results from that google search. You might have to go through a few before you find a satisfactory explanation. And after you've done that, if you have specific questions about things you didn't understand there, please post again.

  • How can I write an instance of a class in a static variable

    Hi !
    I have an instance of a class
    Devisen dev = new Devisen();
    In an other class I have a static method and I need there the content of some variables from dev.
    public static void abc()
    { String text=dev.textfield.getText()
    I get the errormessage, that the I cannot use the Not-static variable dev in a static variable.
    I understand that I cannot reference to the class Devisen because Devisen is not static I so I had to reference to an instance. But an instance is the same as a class with static methodes. (I think so)
    Is there a possibility, if I am in a static method, to call the content of a JTextField of an instance of a class ?
    Thank you Wolfgang

    Hallo, here is more code for my problem:
    class Login {
       Devisen dev=new Devisen();
    class Devisen {
       JTextField field2;
       if (!Check.check_field2()) return; // if value not okay than return
    class Check {
       public static void check_field2()
         HOW TO GET THE CONTENT OF field2 HERE ?
    One solution ist to give the instance to the static function, with the keyword "this"
    if (!Check.check_field2(this)) return;and get the instance
    public static void check_field2(Devisen dev)BUT is that a problem for memory to give every method an instance of the class ? I have 50 fields to control and I dont want do give every check_method an instance of Devisen, if this is a problem for performance.
    Or do I only give the place where the existing instance is.
    Hmm...?
    Thank you Wolfgang

  • Loading the final static variables at run time.. Please help

    Hello, fellow developers & Gurus,
    Please help me figure out the best way to do this:
    I need to load all my constants at run time. These are the public static final instance variables. The variables values are in the DataBase. How do I go about loading them.

    Your original question was diffeent, but your further posts show what you really want to do:
    1) all constants in 1 class
    2) available readonly for other classes
    3) updatable during runtime by changing in the database
    Did I understand you right?
    Then smiths' approach solves point 2):
    Instead, make the variables available through a method
    call - that way you avoid the whole final variable
    versus read-only attributes problem.
    //GLOBAL VARIABLES EXPOSED AS PUBLIC PROPERTIES
    public final class GlobalProperties
    public static int getTableSize();
    public static int getRowSize();
    Each "constant" should be a private static variable, and these methods simply return their values.
    The variables are initialized in a static initializer by accessing the db. Ok.
    You habe a table with one row containing as columns all the constants.
    A method readConstants() does a "select constant1, constant2, ... from const_table" and sets all the variables.
    The static initializer calls this method.
    Right?
    Ok, then you simply call readConstants() everytime you want to synchronize with the actual content of const_table.
    Was it this?

  • Non-static variable being used in static context

    I am currently attempting to write a basic user login system using basic applets. I have two JTextFields named "userText" and "passText".
    What i am attempting to do is use the ".getText()" method to get the text out of the JTextField and verifying the string against a string already in a file using the bufferedReader, etc.
    However when i try to compare the string in the file with the one in the text field using the following code:
    if ((line.compareTo(username)) == 0)
    i get the following error...
    "non-static variable being used in a static context"
    Any ideas?

    The static method doesn't know about instances of the class instead you pass the instance to the method:
    static public void myMethod(MyClass instance, String var) {
      if(instance.line.compareTo(var))
    And then the call would be:
    MyClass.myMethod(anInstance, userName);

  • Main method hangs setting static variable

    I have a very annoying intermittent problem. Once in a while (roughly 1 out of 30 times), my app hangs in the main method when assigning a value to a static variable.
    public static void main(String[] args) {
    //read args
    //do some very trivial stuff (never hangs here)
    someOtherNonStaticClass.aStaticInt = 100;//once in a while it hangs here???
    }I have tried setting "-Dsun.java2d.noddraw=true" but this hasnt helped. I have tried using JRE 1.4.1 and 1.4.2 and they both have this problem. Some machines seem to be worse than others but this may just be chance.
    When the app hangs, it appears in task manager as a javaw.exe process, but the app itself doesnt appear.
    Does anyone have any ideas or suggestions for me to try? Its pretty annoying not have a stack trace to work with.

    I have tried setting "-Dsun.java2d.noddraw=true" butWhy should it?
    this hasnt helped. I have tried using JRE 1.4.1 and
    1.4.2 and they both have this problem. Some machines
    seem to be worse than others but this may just be
    chance.
    When the app hangs, it appears in task manager as a
    javaw.exe process, but the app itself doesnt appear.That's normal. All Java apps would appear as javaw.exe. Because the JVM has the process.
    Does anyone have any ideas or suggestions for me to
    try? Yes. Stop accessing fields of another class. It's bad design to begin with, and it looks to me like you're breaking something someplace else by setting that value to 100 right then.

Maybe you are looking for

  • Payment due date for Asset capital lease

    Hi Gurus We are using capital lease in our client and opening vendor postings are created when we click on opening posting leasing tab of asset master. The issue is with the payment due dates. If my lease duration is 60 months than I get 60 open item

  • Oracle temporary tables

    Hi , we have a application for transfering data approx 1 million records from one schema to another. the data is first inserted into a table temporarily and after all the data is transfered the data is manually deleted from this table. we are plannin

  • Weblogic Server6.1 administration console

    Hi, I have just installed weblogic6.1 with sp2 on windows 2000.I am not able to view the adminstration console.The dialog box for username and password appears,but once i click OK the browser window disppears.Can someone help me with this?? Thanks Ra

  • Download premiere elements 12 after perchasing?

    I bought today Photoshop and Premiere elements 12 for Windows 8.1; download of Photoshop is OK; how can I now download Première ? window and "download button are away...

  • HT2020 if you have internet sharing on imac with Mountain Lion its stil problem with sleep mode ! why ???

    if you have internet sharing on imac with Mountain Lion its stil problem with sleep mode ! why ???