假设我有一些数据类,例如:
data class NameCreated(
val index: Float,
val name: String
) : ESEventPayload
Run Code Online (Sandbox Code Playgroud)
然后我有一些方法,如果事件的类型<Event<out Any>>正在实现,我想返回 true ESEventPayload。
例如:
fun isItUsing(message: AcknowledgeableMessage<Event<out Any>>): Boolean =
Run Code Online (Sandbox Code Playgroud)
I was hoping something like this would work, but it's not:
if (ESEventPayload::class.java.isAssignableFrom(message.body.payloadType::class.java)) {
println("It's using the interface")
} else {
println("It isn't using")
}
Run Code Online (Sandbox Code Playgroud)
How do I go about doing this in Kotlin?
Any help would be appreciated.
Thanks.
Jay*_*ard 10
使用is运算符,它看起来就像:
if (something is ESEventPayload) { ... }
Run Code Online (Sandbox Code Playgroud)
这里没有理由使用isAssignableFrom. 事实上,它具有不智能铸造的负面后果。使用时is您可以...
if (something is ESEventPayload) {
// something here is now smart cast as ESEventPayload, no casting needed
println(something.eventPayloadMemberOrMethod)
}
Run Code Online (Sandbox Code Playgroud)
请参阅: https: //kotlinlang.org/docs/reference/typecasts.html
| 归档时间: |
|
| 查看次数: |
2575 次 |
| 最近记录: |