четверг, 20 сентября 2007 г.

Java Puzzle 50: Not Your Type

public class Type1 {
    public static void main(String[] args) {
        String s = null;
        System.out.println(s instanceof String);
    }
}
Тут все просто. Оператор instanceof определен так, чтобы возвращать false, когда его левый операнд null. Этим многие пользуются, чтобы не делать дополнительных проверок на null.

public class Type2 {
    public static void main(String[] args) {
        System.out.println(new Type2() instanceof String);
    }
}
Тут задачка посложнее и я пропустил тот факт, что оператор instanceof требует, чтобы оба операнда имели такой тип, чтобы один был подтипом другого. А программа не скомпилится.

public class Type3 {
    public static void main(String[] args) {
        Type3 value = (Type3) new Object();
    }
}
Опять подколка. После предыдущей задачи можно решить, что программа не скомпилится. Так оно и было бы, если бы создавался объект типа String. Но в программе создается Object, наследником которого являются все классы, включая Type3. Однако, при попытке выполнения произойдет исключение ClassCastException.

Java Puzzle 49: Larger Than Life

Что напечатает следующая программа?
public class Person {
    private final int age;
    private static final Person PERSON = new Person();
    private static final int YEAR
        = Calendar.getInstance().get(Calendar.YEAR);
    public Person() {
        this.age = YEAR - 2000;
    }
    public static void main(String[] args) {
        System.out.println("age = " + PERSON.age);
    }
}
А программа напечатает не 7, а -2000!
Программа показывает, что можно наблюдать final static поле до того, как оно будет проинициализировано. И чтобы это исправить надо изменить порядок следования полей: поставить YEAR перед PERSON, так как создание экземпляра Person требует проинициализированной переменной YEAR.

Русский сайт Лема

Когда будет сконструировано устройство, которое по желанию сможет понизить или повысить интеллект любого человека, то появится спрос на понижение интеллекта, раз утверждают, что самые счастливые - идиоты. С. Лем

Стройка

Рядом с нашим офисом уже год как строится новое здание центральной налоговой инспекции. Что самое забавное, его строят какие-то южные гастарбайтеры, которые живут прямо в бараках на этой стройке. Наверняка налогов не платят ;-)
Ну а их биотуалеты, видимо, исчерпали свой ресурс и воздух не озонируют...

Пробки

Что-то сегодня на Володарском мосту и в округе офигенная пробка. Видимо из-за того, что на КАДе грузовики покрытие повредили и осталась одна полоса. От дома до налоговой ехал 50 минут. За это время можно было дойти до метро, проехать пару станций и там еще пешочком пройтись. Обратно я так и делал.
Забавный способ объезда пробки по встречке видел. Разворачивается машина на встречку и по ней сдает задо до перекрестка. Там снова разворачивается и впихивается в поток. Уроды!

Налоговая

Сегодня с утра пытался подать документы на налоговые вычеты. После всех остальных попыток я думал, что эта будет последняя. Фиг!
Мне сказали, что я заполнил все правильно, но они не принимают мое заявление, так как я должен подавать его по месту постоянной прописки, а не временной регистрации. Так лениво в Одинцово ехать, а бабла-то хочется...