0
私はComponent
を継承するオブジェクトのコレクションを持っています。具体的なクラスでオブジェクトを見つけて返す関数が必要です。
しかし、Kotlinはキャストが好きではなく、@Suppress("UNCHECKED_CAST")
を追加すると醜いです。Kotlin - 型で要素を見つけてキャストする方法
私は次のコードを持っている:
open class GameObjectImpl : GameObject {
private val attachedComponents = mutableSetOf<Component>()
@Suppress("UNCHECKED_CAST")
override fun <TComponent : Component> getComponent(type: KClass<TComponent>): TComponent? {
return attachedComponents.find { type.isInstance(it) } as? TComponent
}
}
ニート、Kotlinは、すでにビルトイン、私はそれを知らなかったということがあります。 ありがとうございます。 – danielspaniol
このコンパイルを行うには、 'TComponent''を' reified'(そして 'attachedComponents'' public')または' filterIsInstance(type.java) 'を使う必要があります。 – mfulton26
@ mfulton26ああ、 'filterIsInstance'には改訂されたパラメータが必要であることを忘れています。ありがとうございました。 – ean5533