如何在静态方法中使用实例变量

时间:2013-10-08 03:15:04

标签: java

我在Java中遇到了问题 我是Java的新手,所以不要怪我奇怪的代码和东西。

我正在制作一个随意生成数字的小东西,并使用它们来创建有关该信息概述的随机生成树的信息。
问题是,我需要创建一个静态void来打印树的统计数据。

但我所有的变量 - “treeheight”,“treetrunkwidth”等 - 都不能是静态的,或者每个变量信息都会恢复为0或null。这很烦人,因为如果我打印我的空白打印树状态不是静态的,那么它就不会显示,但是如果我将它设置为静态,它就不会随意生成树的信息并随意更改。

我该怎么办?

-AndeX

3 个答案:

答案 0 :(得分:1)

就像那个一样简单

1:可以使用类引用

访问静态成员
ClassName.staticVar

2:可以通过实例引用

访问非静态成员
new CLassName()

现在,如果您可以发布您的代码,我们可以给出确切的建议

答案 1 :(得分:0)

在Thingymabob里面你可以创建

public static void main(String[] argsIgnored) {
    Thingymabob anInstance = new Thingymabob();
    anInstance.doStuffToSetItUp()...
    System.out.println("treeheight = " + anInstance.getTreeheight ());
    System.out.println("treetrunkwidth = " + anInstance.getTreetrunkwidth ());
    etc...
}

答案 2 :(得分:0)

我认为你要找的是Java Singleton Class。我建议你look here for more information

这意味着您只有一个类Thingymabob的实例,并且您可以像往常一样通过getters and setters访问其属性。

这就是constructorgetInstance的样子:

private Thingymabob() {
    // Exists only to defeat instantiation.
}

public static Thingymabob getInstance() {
    if(instance == null) {
        instance = new Thingymabob();
    }
    return instance;
}

然后您可以在所有其他类中访问它,如下所示:

Thingymabob thingy = Thingymabob.getInstance();