Diferencia entre "*" y "Cualquiera" en los generics de Kotlin

No estoy seguro de entender completamente la diferencia entre SomeGeneric<*> y SomeGeneric<Any> . Creo que "*" representa cualquier cosa (comodín) y "Cualquiera" representa el object del que TODOS los objects henetworkingan. Entonces parece que deberían ser lo mismo, pero no lo son?

Puede ser útil pensar en la proyección en estrella como una forma de representar no solo cualquier tipo, sino un tipo fijo que no se sabe exactamente qué es.

Por ejemplo, el tipo MutableList<*> representa la list de algo (no se sabe exactamente qué). Entonces, si intenta agregar algo a esta list, no tendrá éxito. Puede ser una list de String , o una list de Int , o una list de algo más. El comstackdor no permitirá poner ningún object en esta list porque no puede verificar que la list acepte objects de este tipo. Sin embargo, si intentas get un elemento de dicha list, seguramente obtendrás un object de tipo Any? , porque todos los objects en Kotlin henetworkingan de Any .

En el context que creo que implica, SomeGeneric<*> es equivalente a SomeGeneric<out Any?> . El equivalente de Java es SomeGeneric<? extends Object> SomeGeneric<? extends Object> .

La syntax llamada "proyecciones en estrella". Aquí están los documentos oficiales: https://kotlinlang.org/docs/reference/generics.html#star-projections

  • Akka stream, upstream no produce valores
  • dsl dynamic usando kotlin con asistencia de contenido
  • Spring no puede manejar el método que devuelve la class Kotlin interna genérica
  • ¿Existe alguna forma más simple de express classs anónimas en Kotlin?
  • ¿Hay alguna forma mejor de escribir invocaciones de CompletableFutrue.XXXasync () en kotlin?
  • ¿Puedes tener un constructor primario genérico en Kotlin?
  • El error "La variable debe inicializarse" al delegar en una propiedad inicializada
  • Kotlin, problema de condición de carrera
  • ¿Cómo configurar correctamente el complemento de Kotlin para Gradle?
  • Cómo get el nombre de file de class actual en kotlin
  • Bt Socket cerró la exception