Жил-был компилятор по имени Javac. Он был хорошо воспитан и отличался изысканным вкусом (строгим статическим). Но однажды попалась ему такая программа:
public class Foo {
public static int foo() {
return null;
}
public static void main(String[] args) {
System.out.println(foo());
}
}
public static int foo() {
return null;
}
public static void main(String[] args) {
System.out.println(foo());
}
}
Посмотрел он на неё и резонно заявил:
Foo.java:3: incompatible types
found :
required: int
return null;
^
1 error
found :
required: int
return null;
^
1 error
Не угодила она компилятору, оказалась не в его вкусе. Но программа очень хотела понравится компилятору и решила попытать счастья снова:
public class Foo {
public static int foo() {
return true ? null : 0;
}
public static void main(String[] args) {
System.out.println(foo());
}
}
public static int foo() {
return true ? null : 0;
}
public static void main(String[] args) {
System.out.println(foo());
}
}
Компилятор ничего не заподозрил и всё получилось. У них появился замечательный малыш Foo.class.
Но счастье их длилось не долго. Коварный NullPointerException прервал их идиллию и выстрелил в колени обоим.
Но счастье их длилось не долго. Коварный NullPointerException прервал их идиллию и выстрелил в колени обоим.
Exception in thread "main" java.lang.NullPointerException
at Foo.foo(Foo.java:3)
at Foo.main(Foo.java:7)
at Foo.foo(Foo.java:3)
at Foo.main(Foo.java:7)
По мотивам 2ch.so/pr/
1 комментарий:
Жил был мальчик. Нашел мальчик пистолет, хороший пистолет, с защитой, что не дает выстрелить себе голову.
Решил мальчик проверить, а так ли крута эта защита? Проверил - картонка!
Мальчик жил... теперь нет. Слава павшим героям!
Отправить комментарий