繁体   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