クラスの汎用タイプを持つラムダフィールドをどのように呼び出すことができますか?何らかの理由で、Example<*>
のような汎用クラスへの参照は、元の型(Example<Something>
など)をNothing
に置き換える受け入れを生成します。 Example<*>
を参照するだけで、このようなラムダを呼び出すにはどうすればよいですか?私はこの問題を持っていますKotlin:クラスのジェネリック型を持つラムダフィールドを呼び出すにはどうすればよいですか?
コードベース:https://github.com/Jire/Acelta/tree/master/src/main/kotlin/com/acelta/packet/incoming/packets
私はこのコードにしようとしていますが、あなたは第五行に見ることができるように受け入れるタイプがNothing
あるので、私はラムダを呼び出すことはできません。
private val incoming = arrayOfNulls<Packet<*>>(256)
fun incoming(id: Int, packeteer: Packeteer) {
val packet = incoming[id] ?: return
packet.receive(packeteer, /* this is type Nothing! */)
}
問題をコンパイルして実行している特定のコードを質問自体に追加してください。 – miensol
@miensol使用法が追加されました。 – Jire
最小限の自己完結型の例を作成してください。 'Packet'と' Packeteer'はどう定義されていますか? –