Facebook SDK에서이 클래스를보고 있습니다.
public final class ShareDialog extends
FacebookDialogBase<ShareContent, Sharer.Result>
Kotlin에서 다음과 유사한 부모 클래스를 허용하는 메서드를 갖고 싶습니다.
fun shareToFacebook(shareDialog: FacebookDialogBase<ShareContent<*, *>, Sharer.Result>,
activity: Activity)
그러나 내가 그것을 자바 형태로 부르려고 할 때 :
tournamentPresenter.shareToFacebook(new ShareDialog(this), this);
컴파일 시간 오류가 발생합니다.
Error:(751, 45) error: incompatible types: ShareDialog cannot be converted to FacebookDialogBase<ShareContent<?,?>,Result>
추신 : 발표자에게 공유 대화를 제공하지 않는 것이 더 낫다는 것을 알고 있습니다. 저는 그렇게하지 않을 것입니다. 문제의 예로 사용하겠습니다.
문제는 ShareDialog
원시 유형을 사용하는 클래스 의 서명입니다 .
public final class ShareDialog extends
FacebookDialogBase<ShareContent, Sharer.Result>
.................................^^^^^^^^^^^^
그리고 Kotlin 문서에를 사용하라고되어 있지만와 *
동일한 VM 수준 ?
에서 와일드 카드를 사용합니다. FacebookDialogBase<ShareContent, Sharer.Result>
는 할당 할 수 없기 때문에 FacebookDialogBase<ShareContent<?, ?>, Sharer.Result>
호출이 실패합니다.
그러나 원시 유형을 사용하는 것은 유형 매개 변수로 와일드 카드를 사용하는 것과 의미 상 동일 해야 합니다. 따라서 재 해석 캐스트에 해당하는 일반적인 작업을 수행 할 수 있습니다.
FacebookDialogBase<ShareContent<?, ?>, Sharer.Result> myVar = (FacebookDialogBase) new ShareDialog(this);
tournamentPresenter.shareToFacebook(myVar, this);
그리고 상황은 여전히 거의 동일하게 작동합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다