gpt4 book ai didi

Kotlin - 检查对象是否实现特定接口(interface)

转载 作者:行者123 更新时间:2023-12-02 11:57:42 27 4
gpt4 key购买 nike

假设我有一些数据类,例如:

data class NameCreated(
val index: Float,
val name: String
) : ESEventPayload

然后我有一些方法,如果事件的类型在 <Event<out Any>> 中,我想返回 true正在实现 ESEventPayload .

例如:
fun isItUsing(message: AcknowledgeableMessage<Event<out Any>>): Boolean =

我希望这样的事情会起作用,但事实并非如此:
if (ESEventPayload::class.java.isAssignableFrom(message.body.payloadType::class.java)) {
println("It's using the interface")
} else {
println("It isn't using")
}

我该如何在 Kotlin 中执行此操作?

任何帮助,将不胜感激。

谢谢。

最佳答案

使用 is运算符,它看起来像:

if (something is ESEventPayload) { ... }

这里没有理由使用 isAssignableFrom .事实上,它具有不智能类型转换的负面后果。使用 is 时你可以...
if (something is ESEventPayload) {
// something here is now smart cast as ESEventPayload, no casting needed
println(something.eventPayloadMemberOrMethod)
}

见: https://kotlinlang.org/docs/reference/typecasts.html

关于Kotlin - 检查对象是否实现特定接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59192136/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com