Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
… с помощью них можно обнаружить ошибки только на этапе компиляции...
Future<@Nullable User>.getOffer().getOrderActionRef().getOrder().getRootCustomer().getCode() NPE может быть где-угодно, ловить NPE как-то рука не поднимается.long getUserQuota(String userName, String resourceName) {
return getDatabaseEngine().getUserInfo(userName).getResourceLimits(resourceName).getQuota();
} @Nullable User foundUser = findUserByName("vasya");
if(foundUser == null) {
System.out.println("User not found");
return;
}
public void setParam(@Nullable Object param){
// Тут уже можно делать или не делать проверку на param==null в зависимости от логики метода.
// Но нормальная IDE или Findbugs так же сделают инспекцию на передаваемое значение, проверив, что нигде в метод не будет попыток передать null
}public void setParam(@Nullable Object param){
// Тут уже можно делать или не делать проверку на param==null в зависимости от логики метода.
// Но нормальная IDE или Findbugs так же сделают инспекцию на передаваемое значение с учётом что можно передать и null
}public void setParam(@NotNull Object param){
// Тут уже можно делать или не делать проверку на param==null в зависимости от логики метода.
// Но нормальная IDE или Findbugs так же сделают инспекцию на передаваемое значение, проверив, что нигде в метод не будет попыток передать null
}@Nullable для переменной излишне, т.к. IDE и так знает, что метод findUserByName может вернуть null. Помечать необходимо все методы, параметры методов и поля классов. Тогда, как показывает практика, NPE уходит из вашей жизни почти полностью.If an annotation pertains to the SDK, configured for your project, the path is to be defined in the SDK settings. If an annotation pertains to a module, the path should be defined in the module settings.
Map<String, String> map = ImmutableMap.of("bca", "cab");
@Nullable String str = map.get("abc");
Побеждаем NPE hell в Java 6 и 7, используя Intellij Idea