powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопрос по enum
8 сообщений из 8, страница 1 из 1
Вопрос по enum
    #39345542
JulT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет. Есть некий энум:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
public enum TypeInfo {
    ATV_AND_INET(new HashSet(Arrays.asList(TypeInfo.ATV, TypeInfo.INET))),
    DTV_AND_INET(new HashSet(Arrays.asList(TypeInfo.DTV, TypeInfo.INET, TypeInfo.ZTV))),
    DTV(emptySet()),
    INET(emptySet()),
    ATV(emptySet()),
    ZTV(emptySet());

    private Set<TypeInfo> value;

    TypeInfo(Set<TypeInfo> value){
        this.value = value;
    }

    public Set<TypeInfo> getValue() {
        return value;
    }

    public boolean isBundle() {
        return !CollectionUtils.isEmpty(getValue());
    }
}


Как его можно улучшить, или это все криво и нужно вообще переделать, если да, то как, посоветуйте пожалуйста. Спасибо
...
Рейтинг: 0 / 0
Вопрос по enum
    #39345597
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JulT,

А почему бы не воспользоваться старым добрым способом ч/з битовую маску ?!
<:o)
...
Рейтинг: 0 / 0
Вопрос по enum
    #39345609
avp.mk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Просто треш. Через геттер отдаётся мутабельная коллекция. В чём смысл геттера? Инкапсулировать данные, чтобы вам не поменяли ссылочку? (риторические вопросы)
Статический метод ваще агонь.

Сколько у вас опыта разработки на джаве?
...
Рейтинг: 0 / 0
Вопрос по enum
    #39345612
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JulTКак его можно улучшить, или это все криво и нужно вообще переделать, если да, то как, посоветуйте пожалуйста. Спасибо
Улучшить можно, убрав копипасту - можно сделать два разных конструктора и не копипастить функциональность.
Уличшить можно используя EnumSet.
Это всё нужно переделать, потому что метод isBundle() здесь кривой. У вас получится каждый сценарий использования будет выглядеть.

Код: java
1.
2.
3.
4.
5.
if(type.isBundle()){
   doSomethingWithValue(type.getValue())
} else {
   doSomethingWithType(type)
}



Такого не должно быть в принципе. Если уж сильно кортит, то метод isBundle() может быть приватным.
...
Рейтинг: 0 / 0
Вопрос по enum
    #39345614
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
avp.mkПросто треш. Через геттер отдаётся мутабельная коллекция. В чём смысл геттера? Инкапсулировать данные, чтобы вам не поменяли ссылочку? (риторические вопросы)
Статический метод ваще агонь.
Да-да. Про мутабельность забыл указать.

avp.mkСколько у вас опыта разработки на джаве?
Грубиян :)
...
Рейтинг: 0 / 0
Вопрос по enum
    #39345636
avp.mk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowiczможно сделать два разных конструктора

Я бы обошёлся одним.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
import com.google.common.collect.ImmutableSet;

public enum TypeInfo {
    A, B, C,
    COMPOSITE_X(A, B),
    COMPOSITE_Y(B, C);

    public final ImmutableSet<TypeInfo> nestedTypes;

    TypeInfo(TypeInfo... nestedTypes) {
        this.nestedTypes = ImmutableSet.copyOf(nestedTypes);
    }

    public boolean isLeaf() {
        return this.nestedTypes.isEmpty();
    }
}
...
Рейтинг: 0 / 0
Вопрос по enum
    #39345672
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
avp.mkЯ бы обошёлся одним.
Что-то я тупанул. Не подумал, что vararg может быть пустым. А, так да. EnumSet только не хватает.
...
Рейтинг: 0 / 0
Вопрос по enum
    #39345673
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
avp.mkЯ бы обошёлся одним.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
import com.google.common.collect.ImmutableSet;

public enum TypeInfo {
    A, B, C,
    COMPOSITE_X(A, B),
    COMPOSITE_Y(B, C);

    public final ImmutableSet<TypeInfo> nestedTypes;

    TypeInfo(TypeInfo... nestedTypes) {
        this.nestedTypes = ImmutableSet.copyOf(nestedTypes);
    }

    public boolean isLeaf() {
        return this.nestedTypes.isEmpty();
    }
}



Тут, есть один нюанс в том что метода isLeaf() не должно быть. С одним элеметом и с несколькими нужно работать одинаково, поэтому нужно таки вместо пустой коллекции иметь в ней себя.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопрос по enum
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]