2012-07-06 149 views
1

我不太知道该怎么称呼它,但本质上,当我运行这段代码:Java对象从另一个实例中获取变量?

public class test { 

    static Device one; 
    static Device two; 

    public static void main(String[] args) throws Exception { 

     one = new Device("One", "ONE"); 
     System.out.println(one.getName()); 
     two = new Device("Two", "TWO"); 

     System.out.println(one.getName()); 
     System.out.println(two.getName()); 

    } 
} 

输出是:

ONE 
TWO 
TWO 

当它应该是:

ONE 
ONE 
TWO 

设备对象非常简单,它只接收两个字符串,第二个是我要求它打印的“名称”。我之前做过OOP,但我觉得我只是忘记了一些重要的方面,但似乎无法弄清楚。任何帮助表示赞赏,谢谢!

这里是设备的构造函数:

public Device(String iP, String Name) { 
    //Set the IP address 
    IP = iP; 
    //Set the device's name 
    name = Name; 
    // Set the string version of the device (for transmitting) 
    stringVersion = IP + ";" + name; 
} 
+4

如果你可以打印设备的构造函数,它会帮助我们回答。 – BlackVegetable 2012-07-06 16:02:39

+2

显示整个设备类。 IP和名称是静态的吗? – assylias 2012-07-06 16:05:27

+0

是的,他们非常感谢你。我忘了那个......再次感谢! – kakonsan 2012-07-06 16:07:32

回答

8

看起来你已经使用static字段Device了。这些不是实例字段。应避免使用可变的static字段。

+0

是的,你是对的,非常感谢你,不敢相信我没有注意到... – kakonsan 2012-07-06 16:08:01

0

从评论:

显示整个设备类。 IP和名称是静态的吗? - assylias 2分钟 前

是的,他们是

当你实例化Device一个新实例,这就是为什么你这种行为,您的设备静态成员得到重新初始化。你可以有onetwo作为static,但你不应该有可变的成员变量static

相关问题