在我的应用程序中,我有一个名为 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???
}
答案 0 :(得分:2)
这是骨架实现。
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;
}
}
答案 1 :(得分:2)
public class someOtherClass {
private MonsterStats stats;
public someOtherClass(MonsterStats stats){
this.stats = stats;
}
public void myMethod(){
//Call this.stats and do what you want.
}
}
答案 2 :(得分:2)
实际上你混淆了objects
和classes
。
我假设类Monster
的对象应该是包含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();
}
答案 3 :(得分:1)
这不容易。你没有在类中设置变量 - 要这样做,你必须将变量声明为static - 但这不是一个好主意(就我理解你的代码而言)。
你现在拥有的是某个怪物(怪物类的对象)。如果在someOtherClass的实例中有此对象,则可以访问您喜欢的内容。
总而言之,我的印象是你正在混合类和对象。
你能解释一下你想在someOtherClass中使用MonsterStats做什么吗?