У меня есть групповой проект, где мы вынуждены использовать интерфейсы и перечисления.Java-переключатель на перечислении, который реализует тот же интерфейс
Представьте себе ситуацию, как показано ниже:
// marker interface
interface Request<T extends Response>{}
// marker interface
interface Response{}
enum TypeAction implements Request<SomeEnumClassThatImplementsResponse>{
TYPE1, TYPE2, TYPE3
}
enum OtherTypeAction implements Request<SomeOtherEnumClassThatImplementsResponse>{
OTHERTYPE1, OTHERTYPE2
}
В другом классе, у меня есть список запроса, как это: List<Request> req = new LinkedList<Request>()
То, что я хочу сделать, это: сделать переключатель, как показано ниже:
switch(a_request){
CASE TYPE1: ....
CASE TYPE2: ....
CASE TYPE3: ....
CASE TYPE2: ....
CASE OTHERTYPE1: ....
CASE OTHERTYPE2: ....
}
Как я могу это сделать, пожалуйста?
ВАЖНОЕ ЗАМЕЧАНИЕ: Я не могу добавлять методы в интерфейсы и в перечисления, но я могу создать новые перечисления, которые реализуют интерфейсы, которые вы можете видеть выше. Я бы предпочел не иметь двух перечислений, которые делают то же самое, если это возможно.
EDIT: Это отличается от возможного дублирующего ответа тем, что я не могу добавить какой-либо метод в интерфейс запроса, и поэтому я не могу реализовать метод в классах перечисления.
Заранее спасибо
В принципе, вы не можете. Просто используйте 'if' вместо этого. – shmosel
Возможный дубликат [оператора switch для совместного использования классов enum в Java] (http://stackoverflow.com/questions/13958754/switch-statement-for-a-joint-of-different-enum-classes-in- java) – shmosel
@MichaelCurry Как вы «реализуете» перечисление? Вы можете реализовать только интерфейсы. – glglgl