Method 1: traditional getter/setter
Inventory class:
Code:
public class Inventory implements Serializable {
private static final long serialVersionUID = 2011932556974180375L;
private int items; // just example :/
public void addItem(int item){
this.items = item;
}
public int getItems(){
return items;
}
}
Player class:
Code:
public class Player implements Serializable {
private static final long serialVersionUID = 1748193556974180375L;
private Inventory invy;
public void setInvy(Inventory invy){
this.invy = invy;
}
public Inventory getInvy(){
return invy;
}
public void startCharacter(){
int ags = 11694;
getInvy().addItem(ags);
}
}
Method 2: "other"
Inventory class: -same as above inventory class-
Additional containerHandler class:
Code:
public enum HeroContentsContainer {
INVY{
@Override public Object getContainer(){
return new Inventory();
}
},
ARMOUR;
public Object getContainer(){ //because cannot be static enum constant as every human has different items
return null;
}
}
Player class:
Code:
public class Player implements Serializable {
private static final long serialVersionUID = 1748193556974180375L;
private HashMap<HeroContentsContainer, Object> contents;
public void setContents(){
for (HeroContentsContainer c : HeroContentsContainer.values()){
contents.put(c, c.getContainer());
}
}
public HashMap<HeroContentsContainer, Object> getContents(){
return contents;
}
public void startCharacter(){
int ags = 11694;
//TODO easy replicate this: getInvy().addItem(ags);???
}
}
So which method is more better/worse; why? I know storing everything in a map is unsafe.
Can we use the getContents getter in player class to instead return instanceof Inventory instead of object?
Code:
player.getContentsXinstanceofY(HeroContentsContainer.INVY, Inventory).addItem(ags);
This: (below code) seems kind of unproductive considering the objective is to move away from traditional getters/setters
Code:
public Inventory getInvy(){
return (Inventory) contents.get(HeroContentsContainer.INVY);
}