Kotlin反射+泛型

编辑1:改变标题,我的坏。

我有一个界面事件

interface Event 

还有一些实现它的类,比如CustomEvent

 class CustomEvent : Event { ... } 

我一直在尝试做的是:给定一个有事件作为参数的方法(所以,任何实现Event接口的类),像这样

 fun onCustomEvent(event: CustomEvent) { ... } 

,我想将该事件添加到列表中。 因此,这个清单最终将会持有一堆不同的事件。


Java中,我相信它会是这样的(可能不是100%准确的):

 List<Class<? extends Event>> eventsList; .... Class<?> param = methodThatHasSomeEventAsParam.parameterTypes[0]; if (Event.class.isAssignableFrom(param)) { Class<? extends Event> actualParam = (Class<? extends Event>) param; eventsList.add(actualParam); // Adds CustomEvent to the events list. } 

但至于Kotlin,我真的不知道如何正确使用泛型,具体是什么将是正确的翻译方式

 Class<? extends Event> 

到Kotlin,保持与上面的Java代码一样的行为。

提前致谢。

谢谢您的帮助; 这将是在科特林做到这一点的方式:

 // <? extends Event> in Java ==> <out Event> in Kotlin. val myList: MutableList<Class<out Event>> val param: Class<*> = methodThatHasSomeEventAsParam.parameterTypes[0] if (Event::class.java.isAssignableFrom(param)) { param as Class<out Event> myList.add(param) }