10
私はKotlinコンパイラはTがkotlin.AnyKotlin:ジェネリック、反射およびタイプTとTとの違い:任意
class Foo<T> (val t: T){
val cls = t.javaClass // Error, T is not a subtype of kotlin.Any
}
のサブタイプではないと文句を言い、ジェネリック型TののJavaClassにアクセスしようとした場合
Tをサブタイプとして定義する場合は、すべてが正常に動作します。
class Bar<T:Any> (val t: T){
val cls = t.javaClass // OK
}
Q1)型'T'は、クラス/クラス、それはのサブタイプであることができ'Any'のサブタイプでない場合には?
Q2)Tのすべてのインスタンスに対してjavaClassが存在するかどうか、もしあればそれにアクセスするにはどうすればよいですか?
一つのことです。一般的な 'var clsOfT = t?.javaClass'の場合、これはコンパイルエラーですが、通常の型' var a:Any? = "A"; var clsOfA = a?.javaClass'これはどちらも上向きの ':Any?'を持っていてもOKです。 –
@TomasKarlsson、+1は、Kotlinジェネリックの特異性のようです。私は答えを見つけるつもりです。 – hotkey
上記への明確化: 't'はジェネリック型' T'のプロパティです。 –