Я пытаюсь создать программу типа базы данных и хотел узнать, следует ли мне использовать перечисления или классы для представления свойств каждого элемента в базе данных.
Позже я сделаю другие вещи, но, чтобы попробовать кодирование, я использую Pokemon в качестве примера. Итак, моя текущая идея - иметь класс покемонов. Базовые переменные экземпляра, которые представляют свойства каждого объекта Pokemon, являются первым и вторым типом. Тип - это сейчас собственный класс, и каждый тип обладает свойством быть слабым по отношению к другим типам. Это представлено списком других типов. Я не знаю много о перечислениях, но из того, что я прочитал, они хороши, когда вам нужен неизменяемый набор значений, и я подумал, что это будет хорошо для типов. Однако, когда я пытался определить список слабых мест в конструкторе enum, я столкнулся с проблемой добавления других типов в список, когда они еще не были инициализированы.
Должен ли я сделать Type классом вместо перечисления? Должен ли я сделать Pokemon перечисление вместо класса?
import java.util.ArrayList;
public enum Type {
NORMAL,
FIGHTING,
FLYING,
POISON,
GROUND,
ROCK,
BUG,
GHOST,
FIRE,
WATER,
GRASS,
ELECTRIC,
PSYCHIC,
ICE,
DRAGON;
private String name;
private ArrayList<Type> weaknesses;
private Type(){
generateWeaknesses();
}
private void generateWeaknesses(){
switch(this){
case NORMAL:
weaknesses.add(FIGHTING);
break;
case FIGHTING:
weaknesses.add(FLYING);
weaknesses.add(PSYCHIC);
break;
case FLYING:
weaknesses.add(ROCK);
weaknesses.add(ELECTRIC);
weaknesses.add(ICE);
break;
case POISON:
weaknesses.add(GROUND);
weaknesses.add(BUG);
weaknesses.add(PSYCHIC);
case GROUND:
weaknesses.add(WATER);
weaknesses.add(GRASS);
weaknesses.add(ICE);
break;
case ROCK:
weaknesses.add(FIGHTING);
weaknesses.add(GROUND);
weaknesses.add(WATER);
weaknesses.add(GRASS);
break;
default:
break;
}
}
public ArrayList<Type> getWeaknesses(){
return weaknesses;
}
}