Java 在另一个类中访问一个类的变量
在我的应用程序中,我有一个名为Monsters的类,它从XML文件中读取数据。这个怪物类调用另一个名为MonsterStats的类 Monster使用XML文件中的数据设置MonsterStats类中的变量 有没有办法在另一个类中使用这些变量 Monster.javaJava 在另一个类中访问一个类的变量,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
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文件中读入一条龙,那么我就有一个可以在任何地方使用的龙对象。。。