У меня есть три класса (число, вероятно, возрастет в будущем):
public inteface Base{ }
public class Select implements Base{ }
public class Ast implements Base{ }
public class Gt implements Base{ }
Мне также нужен класс List
BaseList extends ArrayList<Base>{
public boolean add(Base b){
throw new UnsupportedOperationException("You should use add%ConcereteBaseType% method instead");
}
public boolean add(Select s){ }
public boolean add(Ast a){ }
public boolean add(Gt g){ }
}
Причина, по которой я делал это, был тот факт, что я не хочу, чтобы кто-то добавлял элементы через указатель на Base
. В моей конкретной ситуации это было бы небезопасно.
Но недостатком является то, что он будет обнаружен только во время выполнения.
Мне также нужно перебирать список.
Хорошо ли это делать?