簡體   English   中英

訪問另一類中一個類的變量

[英]access variables of one class in another class

在我的應用程序中,我有一個名為Monsters的類,該類從XML文件中讀取數據。 這個Monster類調用另一個名為MonsterStats的類。

Monster使用XML文件中的數據在MonsterStats類中設置變量。

有沒有辦法在另一個類中使用這些變量?

Monster.java

public class Monster {

public MonsterStats monsterStats;

...processXML pseudo code...
monsterStats.name = xml.monsterName;
monsterStats.type = xml.monsterType;
monsterStats.race = xml.monsterRace;
...etc...
}

MonsterStats.java

public class MonsterStats {
//encounter info
public String name = "";
public String type = "";
public String race = "";
public String gender = "";
public String alignment = "";   
public int age = 0;

}

someOtherClass.java

public class someOtherClass {
    //how can I access the variables in MonsterStats
    // that were just set by Monsters???
}

這是最基本的實現。

public class someOtherClass {
    //how can I access the variables in MonsterStats
    // that were just set by Monsters???

Monster mnstr = new Monster();
MonsterStats stats = mnsrt.getMonsterStats();
stats.getName();
............
}

public class Monster {

public MonsterStats monsterStats;

...processXML pseudo code...
monsterStats.name = xml.monsterName;
monsterStats.type = xml.monsterType;
monsterStats.race = xml.monsterRace;
...etc...



public MonsterStats getMonsterStats()
{
.....
return monsterStats;
}

}


public class MonsterStats {
//encounter info
public String name = "";
public String type = "";
public String race = "";
public String gender = "";
public String alignment = "";   
public int age = 0;

public String getName()
{
return name;
}
}

我錯過的東西太明顯了嗎? 這個怎么樣?

public class someOtherClass {

private MonsterStats stats;

public someOtherClass(MonsterStats stats){
this.stats = stats;
}


public void myMethod(){

//Call this.stats and do what you want. 

}

}

實際上,您正在混淆objectsclasses

我認為Monster類的Object應該包含MonsterStats以及更多內容。

因此,您只需extend MonsterStats類:

public class Monster extends MonsterStats
{
    public Monster(){} 

    public void parseXML()
    {
        //write your MonsterStats for this Monster from xml
    }

    //public String getName()
    //{
    //    return this.name;
    //}
}

您在MonsterStats聲明的所有方法都可以在Monster類中使用。 如有必要,您可以覆蓋它們。 您不必在Monster類中定義getName()方法,因為您剛剛擴展了提供此方法的MonsterStats類。

someOtherClass ,首先必須創建對象

public class someOtherClass 
{
    Monster myFirstMonster = new Monster();
    myFirstMonster.parseXML();

    String name = myFirstMonster.getName();
}

這不是那么容易。 您無需在類中設置變量-為此,必須將變量聲明為靜態-但這不是一個好主意(就我了解您的代碼而言)。

您現在擁有的是某個怪物(Monster類的對象)。 如果在someOtherClass的實例中有此對象,則可以訪問所需的東西。

總而言之,我給您的印象是您在混合類和對象。

您能解釋在someOtherClass中使用MonsterStats做什么嗎?

暫無
暫無

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

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