Judulnya bertele-tele dan mungkin membingungkan tetapi saya tidak yakin bagaimana membuatnya lebih baik...Saya ingin dapat mengakses nilai dalam daftar array saya dan mencetaknya.
Saya memiliki antarmuka yang disebut ThingBagInterface. ThingBagInterface ini hanya memiliki satu metode, dan terlihat seperti ini:
interface ThingBagInterface {
public String getType();
}
Saya sekarang memiliki kelas yang disebut ThingBag, itu adalah tas yang menampung banyak barang berbeda, seperti Makhluk, Bangunan, dll.
Di kelas ThingBag saya, saya telah menginisialisasi semua Makhluk saya seperti ini:
public void initCreatures(){
waterSnake = new Creature("Water Snake", Terrain.SWAMP, false, false, false, false, 1, 0);
etc...
}
dan kemudian saya memiliki fungsi populateBag() yang terlihat seperti ini:
public void populateBag(){
initCreatures();
bag.add(bears);
}
Definisi daftar array saya ada di ThingBag dan terlihat seperti ini:
ArrayList<ThingBagInterface> bag = new ArrayList<ThingBagInterface>();
Konstruktor Creature saya terlihat seperti ini:
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;
}
Saya ingin mencetak nama beruang itu.
Jadi pada dasarnya saya melakukan ini:
ThingBag tb = new ThingBag();
tb.populateBag();
for(int i= 0; i<tb.bag.size(); i++){
System.out.println(i+". "+tb.bag.get(i));
}
Mengapa saya tidak dapat mengakses nama di tas saya? Jika saya tidak menggunakan antarmuka, saya dapat mengatakan:
System.out.println(i+". "+tb.bag.get(i).name)
Tapi aku tidak bisa sekarang. Adakah ide tentang bagaimana saya dapat mengakses nilai tersebut? Saya hanya dapat mengakses alamat memori sekarang...