ชื่อเรื่องใช้คำมากและอาจทำให้สับสน แต่ฉันไม่แน่ใจว่าจะทำให้ดีขึ้นได้อย่างไร...ฉันต้องการเข้าถึงค่าในรายการอาร์เรย์ของฉันและพิมพ์ออกมา
ฉันมีอินเทอร์เฟซที่เรียกว่า ThingBagInterface ThingBagInterface นี้มีเพียงวิธีเดียวเท่านั้น และมีลักษณะดังนี้:
interface ThingBagInterface {
public String getType();
}
ตอนนี้ฉันมีคลาสชื่อ ThingBag เป็นกระเป๋าที่บรรจุสิ่งของต่างๆ มากมาย เช่น สิ่งมีชีวิต สิ่งปลูกสร้าง เป็นต้น
ในคลาส ThingBag ของฉัน ฉันได้เตรียมใช้งาน Creatures ทั้งหมดของฉันดังนี้:
public void initCreatures(){
waterSnake = new Creature("Water Snake", Terrain.SWAMP, false, false, false, false, 1, 0);
etc...
}
จากนั้นฉันก็มีฟังก์ชัน populateBag() ที่มีลักษณะดังนี้:
public void populateBag(){
initCreatures();
bag.add(bears);
}
คำจำกัดความรายการอาร์เรย์ของฉันอยู่ใน ThingBag และมีลักษณะดังนี้:
ArrayList<ThingBagInterface> bag = new ArrayList<ThingBagInterface>();
ตัวสร้างสิ่งมีชีวิตของฉันมีลักษณะดังนี้:
public Creature(String n, Terrain startTerrain, boolean flying, boolean magic, boolean charge, boolean ranged, int combat, int o){
name = n;
flyingCreature = flying;
magicCreature = magic;
canCharge = charge;
rangedCombat = ranged;
combatValue = combat;
owned = o;
}
ฉันต้องการพิมพ์ชื่อหมี
โดยหลักแล้วฉันกำลังทำสิ่งนี้:
ThingBag tb = new ThingBag();
tb.populateBag();
for(int i= 0; i<tb.bag.size(); i++){
System.out.println(i+". "+tb.bag.get(i));
}
ทำไมฉันไม่สามารถเข้าถึงชื่อในกระเป๋าของฉันได้? ถ้าฉันไม่ได้ใช้อินเทอร์เฟซ ฉันจะสามารถพูดได้ว่า:
System.out.println(i+". "+tb.bag.get(i).name)
แต่ตอนนี้ฉันทำไม่ได้ มีความคิดเห็นใดบ้างว่าฉันสามารถเข้าถึงคุณค่านั้นได้อย่างไร ตอนนี้ฉันเข้าถึงได้เฉพาะที่อยู่หน่วยความจำเท่านั้น...