Genéricos de Java en Kotlin: utilice el tipo de raw de Java como parámetro de método en Kotlin

Estoy viendo esta class en Facebook sdk:

public final class ShareDialog extends FacebookDialogBase<ShareContent, Sharer.Result> 

Quiero tener un método en Kotlin que acepte su class principal, similar al siguiente:

 fun shareToFacebook(shareDialog: FacebookDialogBase<ShareContent<*, *>, Sharer.Result>, activity: Activity) 

Pero cuando bash llamarlo desde Java:

 tournamentPresenter.shareToFacebook(new ShareDialog(this), this); 

Obtengo el error de time de compilation:

Error:(751, 45) error: incompatible types: ShareDialog cannot be converted to FacebookDialogBase<ShareContent<?,?>,Result>

PD. Sé que es mejor no compartir el dialog con el presentador, no voy a hacerlo, vamos a usarlo como ejemplo del problema

El problema es la firma de la class ShareDialog , que usa un tipo sin ShareDialog .

 public final class ShareDialog extends FacebookDialogBase<ShareContent, Sharer.Result> .................................^^^^^^^^^^^^ 

Y, a pesar de que el documento de Kotlin dice que usar * , en un nivel de VM que es equivalente a ? , un comodín. Dado que un FacebookDialogBase<ShareContent, Sharer.Result> no se puede FacebookDialogBase<ShareContent, Sharer.Result> a FacebookDialogBase<ShareContent<?, ?>, Sharer.Result> falla su llamada.

Sin embargo, usar un tipo sin formatting debe ser semánticamente equivalente al uso de comodines como parameters de tipo. Entonces podrías hacer el equivalente genérico de un elenco de reinterpretación:

 FacebookDialogBase<ShareContent<?, ?>, Sharer.Result> myVar = (FacebookDialogBase) new ShareDialog(this); tournamentPresenter.shareToFacebook(myVar, this); 

Y las cosas aún deberían funcionar de la misma manera.

  • ¿Por qué no está myDayForecast.map vacío?
  • Android onCheckedChangeListener comportamiento bizzare
  • Pass facebook AccessToken por Retrofit
  • ¿Cómo puedo convertir una parte del file fuente de Java a Kotlin?
  • ¿Cómo puedo ejecutar files Kotlin-Script (* .kts) desde dentro de Gradle?
  • Equivalente de Kotlin de String.getBytes () de Java
  • Cómo usar volátiles en Kotlin
  • ¿Se debe evitar nombrar una function igual que una class existente en Kotlin? ¿Por qué?
  • ¿Proporcionando object burlado a otro constructor de object falso?
  • Kotlin comtesting si la function requiere parámetro de instancia
  • Clases internas de Kotlin en Java visibles públicamente