해당 라인은 return pFile.exists() ? true : null;
입니다. 컴파일 오류가 발생하지 않으므로 이에 대한 설명은 무엇입니까? 결국 NPE
을 모금했습니다.설명이 필요 : 자바의 3 진 연산자
import java.io.File;
public class Main {
public static void main(String... args) {
boolean accept = accept(new File(""));
System.out.println("accept = " + accept);
}
public static boolean accept(File pFile) {
System.out.println(pFile.exists()); // prints: false, so pFile is not null
return pFile.exists() ? true : null; //this line should throw compilation error
}
}
pFile
은 null
아니다; 보시다시피 File
이 인스턴스화됩니다. 그러나 분명히 그 파일은 존재하지 않습니다. 질문은 pFile
에 관한 것이 아닙니다. 나는 운영자가 null
을 다루는 방법에 관심이있다.
그냥'pFile.exists()'를 돌려 보내지 않는 이유는 무엇입니까? –
accept (File pFile) 메소드의 본문을 다음과 같이 바꿉니다 :'return (pFile == null)? 거짓 : pFile.exists();'또는 삼항 연산자를 사용하는 대신'return (pFile! = null) && pFile.exists();'라고 말할 수 있습니다. – styfle
내 편집을 참조하십시오. 예, 나는'return pFile.exists();을 쓸 수 있습니다. – Kowser