Иоахим - тогда мы должны будем согласиться не соглашаться. Это говорит о том, что сегодня исключения NullPointerException происходят каждый день в производственном коде, и просто нет способа систематически справляться с этими «простыми ошибками в библиотеке». Формальная проверка, таким образом, чрезвычайно ценна для IMHO и, между прочим, сделает весь набор анализаторов кода излишним, поскольку они пытаются сказать вам кое-что, что компилятор должен вам сказать.

String myString = "this";
//string is immutable

myString.concat(" that");
//a new object is created but not assigned to anything

System.out.println(myString); //prints out "this"

предпочел ошибку времени компиляции - почему это не так? Тот же вопрос может быть применен к любому методу с типом возвращаемого значения, когда он вызывается без указания типа возвращаемого значения.

public myObject doStuff(...whatever){
 //define my method
 return anObject;
}

может быть вызван без предоставления ссылки / переменной для хранения возвращаемого типа:

MyObject newObject = doStuff(); //works
doStuff(); //works too without assigning return object

Ответы на вопрос(2)

Ваш ответ на вопрос