Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在另一个类中访问一个类的变量_Java_Android - Fatal编程技术网

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

Java 在另一个类中访问一个类的变量,java,android,Java,Android,在我的应用程序中,我有一个名为Monsters的类,它从XML文件中读取数据。这个怪物类调用另一个名为MonsterStats的类 Monster使用XML文件中的数据设置MonsterStats类中的变量 有没有办法在另一个类中使用这些变量 Monster.java public class Monster { public MonsterStats monsterStats; ...processXML pseudo code... monsterStats.name = xml.mon

在我的应用程序中,我有一个名为Monsters的类,它从XML文件中读取数据。这个怪物类调用另一个名为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???
}

这并不容易。您不需要在类中设置变量——要这样做,您必须将变量声明为静态的——但这不是一个好主意(就我所理解的代码而言)

你现在拥有的是一个怪物(怪物类的对象)。如果此对象在其他类的实例中可用,则可以访问所需的内容

总而言之,我的印象是你在混合类和对象


你能解释一下你想在其他类中使用MonsterStats做什么吗?

这里是框架实现

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. 

}

}

事实上,你把
对象
混在一起了

我假设类
Monster
的对象应该是包含
MonsterStats
和更多内容的对象

因此,您只需扩展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();
}

我不确定getMonsterStats会做什么。这就是名字所暗示的吗?让我直截了当地说…在另一个类中,我叫Monster…Monster叫MonsterStats,然后它处理XML并在MonsterStats中设置变量。我想我在这里迷路了…在getMonsterStats(){monsterStats.setName(xml.monsterName);…}中,在MonstrStats类中添加public void setName(String nameIP){this.name=nameIP;}等等。非常简单,monsterStats实际上是一个getter/setter类(类似于state holder)。在Monster类--getMonsterStats()方法中,您将解析xml并将这些值设置为monsterStats,然后返回monsterStats对象。是的,我想我应该说我希望每个怪物都是自己的对象…所以如果我从xml文件中读入一条龙,那么我就有一个可以在任何地方使用的龙对象。。。