Java: блок внутри функции, его польза

214
28 февраля 2017, 15:43

Доброго времени суток. Собственно, вопрос в том, какой практический смысл конструкции, когда выделяется блок внутри метода. Что-то типа этого:

void method() {
    { System.out.println("что-то делаем") }
    //и остальной код
}
Answer 1

Есть несколько сценариев, в которых могут быть использованы блоки.

  1. Ограничение области видимости переменных.

У переменных, определенных в блоке, областью видимости является блок. В результате в разных блоках можно определять переменные с одинаковыми названиями:

{
String test = "test";
//используем test в первом блоке
}
{
String test = "test2"; 
//используем test во втором блоке
}
  1. Именованные метки.

На блок можно поставить метку, после чего из блока можно будет выходить с помощью break.

A: {
    //где-то в глубине выходим из блока
    if(isFinishedA()) {
        break A;
    }
    //продолжается блок
}
//продолжается метод
  1. Отладка. На строку внутри блока можно поставить точку останова.

Стоит заметить, что во всех перечисленных случаях вместо блока можно использовать другие подходы (разделение на методы, тесты, изменение логики). Соответственно, необходимость локальных блоков спорна.

Похожий вопрос на английском: Is there a use of free floating block inside a method in Java?

READ ALSO
Как дать Label-у имя, используя код?

Как дать Label-у имя, используя код?

Можно ли в java переименовать Label, прописав это в коде самостоятельно?

253
Не удаляются контролы, созданные в цикле

Не удаляются контролы, созданные в цикле

Путем цикла я создала меткиМне нужно, чтобы, когда я кликну на них мышкой, они исчезали

202
Я хочу отображать на экране файлы, которые были созданы time или менее минут назад, и папки их содержащие.

Я хочу отображать на экране файлы, которые были созданы time или менее минут назад, и папки их содержащие.

В эмуляторе все работает как надо, однако на реальных устройствах появляется куча давно созданных файловНе подскажете, почему так происходит?

224
LazyInitializationException и JasperException в JSP

LazyInitializationException и JasperException в JSP

Есть MySQL база с 1 таблицей пользователей, есть простейшее CRUD приложение со Spring MVC и, собственно, Hibernate для работы с этой базойВсе по туториалам:...

268