【发布时间】:2016-05-10 06:40:01
【问题描述】:
如何调用具有其类的泛型类型的 lambda 字段?出于某种原因,对像Example<*> 这样的泛型类的引用会产生一个接受,它将原始类型(如Example<Something>)替换为Nothing。如何仅通过引用 Example<*> 来调用这样的 lambda?
我遇到这个问题的代码库:https://github.com/Jire/Acelta/tree/master/src/main/kotlin/com/acelta/packet/incoming/packets
我正在尝试此代码,但正如您在第 5 行看到的那样,我无法调用 lambda,因为接受类型是 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 用法已添加。
-
请尝试创建一个最小的、独立的示例。
Packet和Packeteer是如何定义的? -
@KirillRakhman 您希望
receive的第二个参数是什么?