Of course you can post what you've already done.
In terms of non-volatile statuses, were you thinking about allowing a Pokémon to be inflicted by more than one? If so, the boolean array would definitely work. If not and you want the Pokémon to only be inflicted by one like the actual games, I would say use an 8-bit unsigned integer as an ID flag.
Also, consider bitwise operations. You can take a Java byte and store 8 boolean values inside (while at the same time using the same amount of data as a standard boolean). So if you have eight boolean values you always want to take to the same places, store them in a byte and perform bitwise 'and' operations and then shift the bits to get the value of the boolean you want.
So here's what I got for the Pokémon object/class:
Let me explain each value:
pokemonID represents the ID of a Pokémon from a database that I will develop on the side, same goes for pokemonName. Right now, nickname is commented out because I wasn't too sure about it for now.
baseStats are in an array of 6 integer values, instead of having six different variables. For me, this is a lot easier and more compact.
heldItem represents the item id from the item table within the future database that will be created.
Gender, base friendship, and weight will be used to calculate the power of certain moves, or moves that involve infatuation (probably going to turn weight into a double instead of an int).
Ability is the same for Pokémon and items, but an abilities table within the database.
EVs and IVs will be in arrays instead of having 6 variables each. I don't know if this is more efficient. If not, I'm up for input.
moveset, currentPP, and PPUps have arrays of 4 instead of 6 because a moveset can only have 4 moves.
The next few are interesting, the three Boolean arrays. The way I thought about this was using this:
https://bulbapedia.bulbagarden.net/wiki/Status_condition
And sort of using the arrays like flags in a Pokémon game. For example, if a Pokémon is paralyzed, one Boolean value in the nonvolatile array will be set to true, so that way it can't be burned, paralyzed, or put to sleep. Unless the Pokémon uses Rest, but that seems easy hopefully, just turn that part of the array to false, and asleep to on.
realStats are going to use the baseStats array to calculate what a Pokémon's stat will read. For example, if I have a Blissey with 252 EVs and 31 IVs in HP, it should calculated and give me a Blissey with 716 HP. battleStats are the stats during the battle that can be manipulated (stat change, HP loss, etc.)
Finally, an isShiny flag to, well, determine if the Pokémon is shiny or not.
That's what I have so far, though I have ideas of creating Move, Item, and Ability objects. Just not too sure on how to implement them, you know? If anyone has any input, I'd love to hear it.
Btw, are enums like C Header files where it can be used for constants. Cause if so, whoops. I made classes full of the values. Could that work, or switch over?