понедельник, 10 сентября 2007 г.
Google + Microsoft
Неужели Google и Microsoft подружились? Google предлагает скачать IE7 со встроенной панелью Google со своего сайта.
Играем мускулами
Несмотря на то, что некоторые западные критики свысока смотрят на российские ВВС, американские и британские самолеты с поразительной частотой по тревоге взлетают в небо для конвоирования российских стратегических бомбардировщиков, отслеживают их действия во время проведения летно-тактических учений. Это и есть реальная оценка НАТО потенциальных возможностей российских стратегических ВВС.
Java Puzzle 38: The Unwelcome Guest
Авторы наворотили безумную программу, высосанную из пальца, так как нормальные программисты так не пишут. Вкратце, рассмотрим следующий код:
public class UnwelcomeGuest {
private static final long ID;
static {
try {
ID = getID(); // can throw an exception
} catch (Exception exception) {
ID = -1;
}
}
}
Проблема тут в том, что blank final поле может быть инициализирована только в том месте программы, где она действительно неинициализирована. Но компилятор не может определить, что первое присваивание недостижимо. Авторы рекомендуют создать статический метод для вычисления значения поля:
public class UnwelcomeGuest {
private static final long ID = calcID();
private static long calcID() {
try {
return getID(); // can throw an exception
} catch (Exception exception) {
return -1;
}
}
}
Плюсом этого подхода является то, что вычисление значения константы вынесено в отдельный метод, для которого можно написать документацию (что, как и почему)...
public class UnwelcomeGuest {
private static final long ID;
static {
try {
ID = getID(); // can throw an exception
} catch (Exception exception) {
ID = -1;
}
}
}
Проблема тут в том, что blank final поле может быть инициализирована только в том месте программы, где она действительно неинициализирована. Но компилятор не может определить, что первое присваивание недостижимо. Авторы рекомендуют создать статический метод для вычисления значения поля:
public class UnwelcomeGuest {
private static final long ID = calcID();
private static long calcID() {
try {
return getID(); // can throw an exception
} catch (Exception exception) {
return -1;
}
}
}
Плюсом этого подхода является то, что вычисление значения константы вынесено в отдельный метод, для которого можно написать документацию (что, как и почему)...
Подписаться на:
Сообщения (Atom)