Kotlinreflection+generics
编辑1:改变标题,我的坏。
我有一个界面事件 :
interface Event
还有一些实现它的类,比如CustomEvent :
class CustomEvent : Event { ... }
我一直在尝试做的是:给定一个有事件作为参数的方法(所以,任何实现Event接口的类),像这样
fun onCustomEvent(event: CustomEvent) { ... }
,我想将该事件添加到列表中。 因此,这个清单最终将会持有一堆不同的事件。
在Java中,我相信它会是这样的(可能不是100%准确的):
List<Class> eventsList; .... Class param = methodThatHasSomeEventAsParam.parameterTypes[0]; if (Event.class.isAssignableFrom(param)) { Class actualParam = (Class) param; eventsList.add(actualParam); // Adds CustomEvent to the events list. }
但至于Kotlin,我真的不知道如何正确使用generics,具体是什么将是正确的翻译方式
Class
到Kotlin,保持与上面的Java代码相同的行为。
提前致谢。
谢谢您的帮助; 这将是在科特林做到这一点的方式:
// extends Event> in Java ==> in Kotlin. val myList: MutableList> val param: Class<*> = methodThatHasSomeEventAsParam.parameterTypes[0] if (Event::class.java.isAssignableFrom(param)) { param as Class myList.add(param) }