Subclase de reflexión genérica de Kotlin

Tengo una función que toma a Class<GenericType<Constraint>>. Cuando paso una subclase de eso, GenericType<Constraint>el compilador comete un error con el mensaje: Type Inference Failed. Expected Type Mismatch

Sin embargo, si lanzo el tipo a su supertipo, funciona bien (con una advertencia). ¿Cómo hacer esto sin lanzar?

open class Bag<T>

class IntBag: Bag<Int>()

fun testStuff(type: Class<Bag<Int>>) {
    // Do stuff
}

testStuff(IntBag::class.java) // This won't compile
testStuff(IntBag::class.java as Class<Bag<Int>>) // This compiles with a warning, but runs fine
Respuesta 1

Tendrás que usar la varianza: fun testStuff(type: Class<out Bag<Int>>)

https://kotlinlang.org/docs/reference/generics.html

Respuesta: 2

Bag<Int>es efectivamente diferente de IntBagya que son clases diferentes.

Podría utilizar un typealias para IntBagasí:

typealias IntBag = Bag<Int>
Respuesta: 3

Estoy trabajando en algunos desafíos usando la recursividad en Java (un nuevo concepto para mí). Actualmente estoy trabajando en un método recursivo que da la suma de dígitos dado un parámetro largo (n). Salida prevista: ...

Quiero registrar eventos de la consola WebView. A veces recogen peculiaridades en el navegador subyacente utilizado y pueden ayudar con la resolución de problemas. Es posible utilizar una clase de implementación de Sun para interactuar ...

Tengo un código a continuación que utilizo para consultar la base de datos y agregar datos a la lista, Consulta q = session.createQuery ("select tally_receipt_prefix, tally_receipt_no, tally_head, tally_amount ...

Pude usar esta pregunta como punto de partida para analizar un archivo "mht" pero el "3D" en las etiquetas de anclaje (por ejemplo: <a href=3D"[my anchorfont>"> [texto de anclaje]> </ a >) rompe todos los ...