я уже спросил один из противоречия вопроса здесь Why is this not throwing a NullPointerException?Почему это исключение исключения null-указателя?
Но это один из различного типа и поведения я хочу знать, пожалуйста, посмотрите на мой пример ниже
package com;
public class test {
public static void main(String[] args) {
Abc abc = null;
//Scenario 1
System.out.println("ERROR HERE " + abc!=null?abc.getS1():""); //This is throwing null pointer exception
//Scenario 2
String s1 = abc!=null?abc.getS1():"";
System.out.println("This is fine " + s1);
}
}
class Abc {
String s1;
public String getS1() {
return s1;
}
public void setS1(String s1) {
this.s1 = s1;
}
}
Так вот сценария 2 будет работать нормально, но почему он не работает, когда я пытаюсь использовать его с другим конкатенацией строк в Сценарий 1?
Из-за порядка оценки аргумента 'println()' в 1-м случае '' ОШИБКА ЗДЕСЬ '+ abc' сначала оценивается и дает NPE. –