2013-10-08 34 views
0

我在Java中遇到问题。
我对Java真的很陌生,所以不要怪我怪异的代码和东西。如何在静态方法中使用实例变量

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

但是我所有的变量 - “treeheight”,“treetrunkwidth”等 - 都不能是静态的,或者每一个可变的信息片段都会返回0或为空。这很令人讨厌,因为如果我打印出的树状统计数字不是静态的,那么它就不会显示出来,但是如果我将其设置为静态,它将不会让树的信息随意生成并随意更改。

我该怎么办?

-AndeX

+0

首先,你应该发布您的代码。然后我们将看到我们可以做什么... – BlackHatSamurai

+0

你想要一些信息与对象关联,然后实例化对象并使用。 – Gireesh

+0

你需要显示一些代码。但是,这可能归结为在某个地方放置了新的thingymabob()。 – Thilo

回答

1

那样简单

1:静态成员可以与类引用来访问

ClassName.staticVar 

2:非静态成员可以通过实例来访问参考

new CLassName() 

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

+0

我认为Andex想通过不使用“new”来调用实例变量。 – Rudy

+1

这没有意义。实例变量就是对象的“实例”。你不能那样做。 – BlackHatSamurai

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... 
} 
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(); 
相关问题