@Che_Bu_Rashka

Что за двойные фигурные скобки в коде?

Вот кусок кода, не важна его суть.

public List<SelectItem> filterOptions = new ArrayList<SelectItem>() {{
        add(new SelectItem("Van"));
        add(new SelectItem("Bus"));
        add(new SelectItem("Compact"));
        add(new SelectItem("Semi-Truck"));
        add(new SelectItem("Pickup"));
    }};


Вопрос что за двойные фигурные скобки? Поясните. Без них не работает. Что это за синтаксис, когда применяется?
  • Вопрос задан
  • 2302 просмотра
Решения вопроса 1
Это лучше записать так, чтобы было понятней.
public List<SelectItem> filterOptions = new ArrayList<SelectItem>() {
    // anonymous constructor()
    {
        add(new SelectItem("Van"));
        add(new SelectItem("Bus"));
        add(new SelectItem("Compact"));
        add(new SelectItem("Semi-Truck"));
        add(new SelectItem("Pickup"));
    }
};

Здесь создается анонимный дочерний класс от ArrayList и вызывается его конструктор (тоже, кстати, без имени)
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
sHinE
@sHinE
веб-разработчик, php/js/mysql и сопутствующее
Судя по всему - блок инициализации - https://habrahabr.ru/post/133237/ первый раздел.
P.S. ниразу не спец по java
Ответ написан
@Che_Bu_Rashka Автор вопроса
Спасибо, просветили. Сколько еще тонкостей. всяких...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы