如何为Kotlin属性指定参数化的generics?
我在Kotlin中有一个方法,如下所示:
fun addEventListener(eventClass: Class, eventHandler: EventHandler) { eventListeners.put(eventClass, eventHandler) }
另外我有一个属性eventListeners
但我不知道如何定义它,所以它会有相同的genericstypes,有点像这样
private val eventListeners = HashMap<Class, EventHandler>()
很明显, T
不会为属性eventListeners
而eventListeners
,那就是我正在努力的。 大家都知道,我知道T
可以被定义为整个类(例如, class MyClass {...}
),这样就简单了,但在这种情况下,我不能做到这一点。
你不能安全地做。 你需要使用例如eventListeners: HashMap
并在getEventListener
中进行投射, 如果您只访问这两个函数的listeners
,这应该是安全的。 提取到一个单独的类将会阻止直接访问地图是合理的。