[英]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.
}
}
實際上,您正在混淆objects
和classes
。
我認為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.