2017-11-24 1 views
0

제 3 자 라이브러리 (java)의 인터페이스를 구현 중입니다. 나는 다음과 같은 서명 기능을 무시하고 :kotlin에서 재정의 된 함수 매개 변수의 null 가능 변경하기

override fun onCallback(name: String?) { 

} 

나는 컴파일러 불평없이 다음에 변경할 수 있습니다

override fun onCallback(name: String) { 

} 

이것의 효과는 무엇입니까? 기본 라이브러리가 onCallback(null)이라면 어떻게 될까요? 자바에서 오는

답변

2

유형이 경우 플랫폼 유형 (있으며,이 매개 변수는 String!의 유형이 있습니다. 매개 변수가 자바 주석되어 있지 않은 경우, 그것은 이제까지 null 값을 가질 수 있는지 여부를 결정하는 당신까지, 그리고 그에 따라 Kotlin에서 매개 변수의 유형을 표시해야합니다. nullable이 아닌 것으로 표시하고 Java 코드가 null을 전달하면 런타임시 예외가 발생합니다. Kotlin은 다음과 같은 매개 변수에 대한 검사를 생성합니다. 디 컴파일 생성 된 바이트 코드에 의한에.

또한 자세한 내용에 대한 null safety and platform types에 대한 공식 문서를 참조하십시오.

+0

을 아 좋아, (내가 듣기 다른 한 주 동안 플랫폼 유형에 대한 이야기를했는데, 내 두뇌가 연결되지 않았다.) 나는 희망찬 생각을했다. 나는 함수와 일치하지 않는 호출이 단지 무의미하게 걸러지기를 바랐다 ... 지금 nullcheck을 피할 수있는 방법을 모르겠다 .- ' – Adam

+0

원한다면 매개 변수에 null 입력 가능 유형을 만들 수있다. 함수의 첫 번째 줄에'name? : return'을 추가하십시오. 매개 변수는 본질적으로'val's이기 때문에, 함수의 나머지 부분에 대해서는 null이 아닌 타입으로 똑똑하게 변환 될 것입니다. – zsmb13

관련 문제