Been a while since I used Java and was wondering if this was a decent or even correct way of setting this up.
FYI, userResults refers to a JDBI variable that isn’t present in the code below.
Feel free to suggest a better method, thanks.
public class Stat
{
private int current;
private int max;
public int getCurrent() {return current;}
public void setCurrent(int current) {this.current = current;}
public int getMax() {return max;}
public void setMax(int max) {this.max = max;}
}
public class Character
{
Stat hp = new Stat();
Stat mp = new Stat();
}
Character thisCharacter = new Character();
// Set the value of current & max HP according to db data.
thisCharacter.hp.setCurrent((Integer) userResults.get("hpColumn1"));
thisCharacter.hp.setMax((Integer) userResults.get("hpColumn2"));
// Print test values
System.out.println (thisCharacter.hp.Current);
System.out.println (thisCharacter.hp.Max);
Correct? Well, does it work? Then it probably is correct.
Wether or not it is a decent way to do it then the answer is “maybe”. It is hard to tell from what context this code is in. But there are some things you could keep in mind though:
Statset in? Do you feel is it the responsibility of the class to do this and know what database values to get them from? If not, consider making some kind of a class that does this.thisCharacter.hp.setCurrent(...)is a violation of principle of least knowledge. Sometimes you can’t help it, but usually it leads to kludgy code. Consider having something that handles all the logic surrounding the stats. In your code you may need aHealthStatsHandlerthat have methods such asloadStats(),saveStats(), and mutator actions such astakeDamage(int dmg)andrevive(int health).