访问另一个类中一个类的变量

时间:2012-01-04 20:14:58

标签: java android

在我的应用程序中,我有一个名为 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???
}

4 个答案:

答案 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)

实际上你混淆了objectsclasses

我假设类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做什么吗?