我试图引用包含在数组列表中的对象的属性,该列表本身就是另一个对象的属性。
这是代码的简单版本
物品类
public class Item {
String name;
String stat;
int dmg;
public Item(String name, String stat, int dmg) {
this.name = name;
this.stat = stat;
this.dmg = dmg;
}
}
单元类
import java.util.ArrayList;
public class Unit {
String unitName;
int unitHealth;
int unitMoves;
int unitDmg;
ArrayList<Item> unitInv;
protected Unit(String name, int health, int dmg, int moves, ArrayList<Item> inv) {
unitName = name;
unitHealth = health;
unitDmg = dmg;
unitMoves = moves;
unitInv = inv;
}
}
游戏课
import java.util.ArrayList;
public class Game {
public static void main(String[] args) {
Item testItem = new Item("Test Item", "DMG", 10);
ArrayList<Item> unitInv = new ArrayList<>();
Unit unitObj0 = new Unit("Test Unit", 100, 10, 4, unitInv);
unitInv.add(testItem);
}
public void getName() {
for(int i =0; i < unitInv.size(); i++) {
System.out.println(i);
}
}
}
我试图弄清楚如何具体引用unitInv中包含的testItem的每个属性。我想对访问testItem属性的方法进行编码,并使用它们来修改unitObj0的属性。这样做的目的是,我将更改unitInv中包含的项目,并且我将需要能够编写模块化代码,无论unitInv中包含的项目或项目数量如何,都可以访问相同的信息。
我花了很多时间弄乱for循环,但是我不明白如何使循环访问unitInv中包含的testItem的属性,更不用说我不确定那是否适合在这里做。如果有更好的模块化方法来执行我在此处尝试执行的操作,请在可能的情况下提供详细建议。
答案 0 :(得分:0)
如果要访问unitInv
对象的unitObj0
列表中的每个项目,可以尝试以下for
循环:
for ( Item item : unitObj0.unitInv ) {
// use your individual item here
}
这将允许您访问ArrayList item
的每个unitInv
,这是unitObj0
的属性。
答案 1 :(得分:0)
因此您的代码存在以下问题:
unitInv
在main
内部定义,因此,不能在其范围之外访问它。您必须在方法之外声明它,或将其引用传递给您正在调用的方法。getName
方法,但我将假定它在main
内部。尝试一下:
import java.util.ArrayList;
public class Game {
public static void main(String[] args) {
Item testItem = new Item("Test Item", "DMG", 10);
ArrayList<Item> unitInv = new ArrayList<>();
Unit unitObj0 = new Unit("Test Unit", 100, 10, 4, unitInv);
unitInv.add(testItem);
getName(unitObj0);
}
public void getName(Unit unit) {
for( Item item : unit.unitInv ) {
System.out.println(i);
}
}
}