Wenn ich versuche, die Java eines generischen Typs T die Kotlin Compiler zugreifen beschwert sich, dass T nicht ein Subtyp von kotlin.Any istKotlin: Generics, der Reflexion und der Unterschied zwischen Typ T und T: Jede
class Foo<T> (val t: T){
val cls = t.javaClass // Error, T is not a subtype of kotlin.Any
}
Wenn definieren T als Subtyp von Any funktioniert alles ok.
class Bar<T:Any> (val t: T){
val cls = t.javaClass // OK
}
Q1) Wenn Typ'T' kein Subtyp von'Any' ist die Klasse/Klassen es ein Subtyp sein kann?
Q2) Gibt es eine JavaClass für alle Instanzen von T und wenn ja, wie kann ich darauf zugreifen?
Eine Sache, die mich aber puzzels Deshalb muß ich nur für generische Typen gegossen. Für ein generisches t 'var clsOfT = t? .javaClass' ergibt dies einen Kompilierungsfehler, aber für einen regulären Typ' var a: Any? = "A"; var clsOfA = a? .javaClass' das ist ok, obwohl beide die obere haben ': Any?'? –
@TomasKarlsson, +1, sieht aus wie eine Besonderheit von Kotlin-Generika. Ich werde die Antwort finden. – hotkey
Erläuterung zu dem oben genannten: 't 'ist eine Eigenschaft des generischen Typs' T' –