public interface Callbacks {
void onCurrentLocation(ClientLocation location);
void onError();
}
하고 생성자에서이 인터페이스를 취하는 클래스는 말한다 :
public MyLocationClient(Callbacks callbacks) {...}
이제 Kotlin에서 MyLocationClient를이 방식으로 인스턴스화 할 수 있어야합니까?
val myLocationClient = MyLocationClient(
{ location: ClientLocation ->
updateClientLocation(location)
},
{})
만약 그렇지 않다면 왜 안됩니까?
내가보기에는 다음과 같은 동작이 있습니다. 인터페이스에 하나의 메서드 만 있으면이 개체의 생성이 올바르게 컴파일됩니다. 그러나, 최대한 빨리 Callbacks
에 더 많은 방법을 추가 할 때, 컴파일러는
. "형식 불일치 필수 : 찾을 콜백! (ClientLocation을) -> 단위"불평
편집 : 널 (null)을 제거 질문과 관련이 없으므로 location
을 확인하십시오. , 나는 이것이 좋은 일이 생각
val myLocationClient = MyLocationClient(object : Callbacks {
override fun onCurrentLocation(location : ClientLocation?){
location?.let{ updateLocation(it) }
}
override fun onError(){ // should you not handle errors? }
})
나는 이것을 이해하는 것으로 생각하고 있습니다. 왜냐하면 이해하고 있기 때문에 이것이 내가 묻는 것을 실제로 할 수없는 이유이기 때문입니다. – sophia