簡體   English   中英

如何在靜態方法中使用實例變量

[英]how to use instance variables in a static method

我在Java中遇到問題。
我是Java的新手,所以不要怪異的代碼和東西。

我正在制作一個小型的Thymymabob,它會隨機生成數字,並使用它們來創建有關隨機生成的樹(由該信息概述)的信息。
問題是,我需要制作一個靜態void來打印樹的統計信息。

但是我所有的變量-“ treeheight”,“ treetrunkwidth”等-都不是靜態的,或者每條變量信息都恢復為0或null。 這很煩人,因為如果我將打印樹狀統計信息的時間設為非靜態,則不會顯示出來,但是如果我將其設為靜態,則不會讓樹的信息隨意生成和隨意更改。

我該怎么辦??

-AndeX

就如此容易

1:可以通過類引用訪問靜態成員

ClassName.staticVar

2:非靜態成員可以通過實例引用進行訪問

new CLassName()

現在,如果您可以發布您的代碼,我們可以給出確切的建議

在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...
}

我認為您正在尋找的是Java Singleton Class 我建議您在這里查看更多信息

這將意味着您將只有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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM