[英]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.