簡體   English   中英

如何從另一個方法訪問在主方法中實例化的對象?

[英]How do I access an object I've instantiated in my main method from another method?

我確定我缺少一些愚蠢的東西,這是我的代碼:

public class clearBlankGrid {

    public static void main(String args[]) {

        Monster myMonster = new Monster(10,10,5,5,1);
        MonsterGUI myGUI = new MonsterGUI(myMonster);

        if (myMonster.getRows() > 0) {   
            // 0 = North, 1 = East, 2 = South, 3 = West
            myMonster.setFacing(3);
            myMonster.setIcon();
        }

    }

    public static void keepClearing() {

        myMonster.isGridCleared(); // Cannot find symbol 'myMonster'

    }

}

如果要在keepClearing方法(靜態)中訪問myMonster ,則必須為靜態成員。

注意:作為參考,您還可以通過實際實例化clearBlankGrid類來避免將Monster成員clearBlankGrid靜態。 然后, Monster可以是clearBlankGrid的實例變量,這意味着keepClearing方法不再必須是靜態的。

public class clearBlankGrid {

   private Monster myMonster;
   private MonsterGUI myGUI;

   public void run() {
       myMonster = new Monster(10,10,5,5,1);
       myGUI = new MonsterGUI(myMonster);

       if (myMonster.getRows() > 0) {   
            // 0 = North, 1 = East, 2 = South, 3 = West
            myMonster.setFacing(3);
            myMonster.setIcon();
        }
   }

    public void keepClearing() {
        myMonster.isGridCleared();
    }

    public static void main(String args[]) {
        clearBlankGrid blankGrid = new clearBlankGrid();
        blankGrid.run();
    }
}

您需要將對象放在靜態字段中。

使myMonster成為static類成員:

public class clearBlankGrid {

    private static Monster myMonster;

    public static void main(String args[]) {

        myMonster = new Monster(10,10,5,5,1);
        // ...

    }
}
public class clearBlankGrid {

    // I made this static because you access it via a static method.  
    // If you make it a class member, as Greg Hewgill suggested, then 
    // change the method that uses it to be non-static
    private static  Monster myMonster = new Monster(10,10,5,5,1);


    public static void main(String args[]) {

        MonsterGUI myGUI = new MonsterGUI(myMonster);

        if (myMonster.getRows() > 0) {   
            // 0 = North, 1 = East, 2 = South, 3 = West
            myMonster.setFacing(3);
            myMonster.setIcon();
        }

    }

    public static void keepClearing() {

        myMonster.isGridCleared(); // Cannot find symbol 'myMonster'

    }
}

暫無
暫無

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

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