0

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

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

但是我所有的变量——“treeheight”、“treetrunkwidth”等——不能是静态的,或者每个变量信息都恢复为 0 或 null。这很烦人,因为如果我让打印树统计信息的空白不是静态的,那么它就不会显示出来,但是如果我把它设为静态,它就不会让树的信息随机生成和随意更改。

我该怎么办??

-AndeX

4

3 回答 3

1

就如此容易

1:静态成员可以通过类引用访问

ClassName.staticVar

2:可以通过实例引用访问非静态成员

new CLassName()

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

于 2013-10-08T03:25:47.667 回答
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...
}
于 2013-10-08T03:54:46.170 回答
0

我认为您正在寻找的是Java Singleton Class. 我建议您在这里查看更多信息

这意味着您将永远只有一个类的实例,Thingymabob并且您可以像往常一样通过getters and setters.

这就是constructorand的getInstance样子:

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

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

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

Thingymabob thingy = Thingymabob.getInstance();
于 2013-10-08T04:01:26.807 回答