Scala 컴파일러는 -Xcheck-null
에 런타임시 null 포인터 역 참조가 있는지 확인하려고 시도합니다.항상 null이 아닌 메소드 호출을 호출하십시오. 결과 :
그것은 나에게 괜찮습니다,하지만 난 로거 정의 가정, 즉 너무 많은 잘못된 반응을 얻을 : getLogger
결코 null
반환
private final val LOGGER: Logger = LoggerFactory.getLogger(classOf[GenericRestImpl])
방법을. 이 지식을 컴파일러에 전달하면 어떻게 불평하지 않을 수 있습니까? 나는 새 인스턴스를 만들 때
[WARNING] TestImpl.scala:31: warning: potential null pointer dereference: LOGGER.debug
[WARNING] LOGGER.debug("Using {} for sort", sortParam)
나는 NotNull
특성으로 표시 할 수 있습니다 :
return new Foo() with NotNull.
괜찮
하지만, 무엇을 객체가 다른 방법에서 돌아와 함께 할? 특히 제 3 자 라이브러리에서 오는 경우? 너무 많은 오버 헤드를 추가하기 때문에 모든 변수를 선택 사항로 표시하는 것이 싫습니다. 또한 암시 적 변환을 만들 생각이 없습니다. 왜냐하면 NotNull로 표시하려는 각 클래스에 대한 추가 클래스가 필요하기 때문입니다.
나는 Library support for Scala's NotNull trait 질문을 확인했지만 문제를 해결하는 데는 도움이되지 않았습니다. 당신은 아무것도에 태그를 NotNull
을 사용할 수 있도록
당신은 NotNull 형질이 마커 일뿐입니다. 더 이상 아무것도하지 않습니다. – Jatin