#java
Собственно, вопрос, как это выглядит? Для примера возьмем: public enum Transport{ SHOTGUN, RIFLE, MINIGUN } И вот для каждого перечисления нужно задать еще один enum для конкретной модели. Как это будет выглядеть и как к этому обращаться? изначально мне кажется что должна присутствовать строка public Transport(Enum type){this.type = type}; Но ведь для каждого перечисления будет свое перечисление. И перечисление нельзя наследовать. Подскажите.
Ответы
Ответ 1
Определите интерфейс, который должны будут реализовывать ваши вложенные перечисления. public enum Transport { SHOTGUN(Type1.T11), RIFLE(Type2.T21), MINIGUN(Type3.T31); private Weapon weapon; Transport(Weapon weapon) { this.weapon = weapon; } public interface Weapon {}; public enum Type1 implements Weapon { T11, T12; } public enum Type2 implements Weapon { T21, T22; } public enum Type3 implements Weapon { T31, T32; } }Ответ 2
с наследованием наверняка не получится... public class EnumManager { public enum ABC { A, B, C } public enum DEF { D, E, F } public enum GHJ { G, H, J } public enum Transport { SHOTGUN, RIFLE, MINIGUN } private static final Map < Transport, Enum < ? >[] > children = new HashMap < Transport, Enum < ? >[] > () ; static { children.put ( Transport.SHOTGUN, ABC.values () ) ; children.put ( Transport.RIFLE, DEF.values () ) ; children.put ( Transport.MINIGUN, GHJ.values () ) ; } public static Enum < ? >[] getChildren ( final Transport parent ) { return children.get ( parent ) ; } public static void main ( final String[] args ) { for ( final Transport t : Transport.values () ) { System.out.println ( Arrays.toString ( getChildren ( t ) ) ) ; } } } выводит: [A, B, C] [D, E, F] [G, H, J]
Комментариев нет:
Отправить комментарий