I am new to java , but in other languages I think the suggestion given by 65k would be most correct IMO.
If you pass an enemy type, and level to the constructor, you can set all of that stuff up pretty easily.
In fact, I did a similar thing in a c class some years back. The code to setup the monsters stats need not even be in the enemy super class, and in fact it may be better to remove it for sanity sake. Use whatever means you want to pass the monster type to the constructor. An enum works. Then inside of the constructor, you can have the values be something like
this.ac = rpgKit.getACstat(MonsterType, Level);
this.hp = rpgKit.getHPstat(MonsterType,Level);
then in the rpgKit, getACstat can use a straightforward case selection(switch) statement to determine which stat to return on that call.
ac = level \ 2;
ac = (level/3) + 5;
boss switch can be done in couple ways
Boss type monster, then use the level to determien stuff, spawnCritter(Boss,1);//--rat boss--//
regular monster type, with a level of -1,-2 etc to represent the Boss level spawnCritter(RAT,-20); lvl 2 rat boss
or, use a subclass for the bosses, which makes it possible to determine other behaviors like healing and summons, without having those things isntantiated with enemies that never use them.