我在Java库中声明了以下方法:
Engine.java:
现在,我经常使用这些方法,我真的很想在所有地方使用
所以我想创建接受
类似于...
但是由于几个原因,这并不起作用:编译器说类型推断失败,因为
有人能帮我创建这些方法吗?
Engine.java:
public <T extends EntitySystem> T getSystem(Class<T> systemType)
Entity.java:
public <T extends Component> T getComponent(Class<T> componentClass)
现在,我经常使用这些方法,我真的很想在所有地方使用
MyComponent::class
(即Kotlin反射),而不是更冗长的javaClass<MyComponent>()
。
我的EntitySystem
和Component
实现是用Kotlin编写的。所以我想创建接受
KClasses
的扩展函数,但我不太确定如何使它们工作。类似于...
public fun <C : Component> Entity.getComponent(type: KClass<out Component>): C {
return getComponent(type.javaClass)
}
但是由于几个原因,这并不起作用:编译器说类型推断失败,因为
javaClass
返回Class<KClass<C>>
。我需要的是Class<C>
。我也不知道如何使方法正确地通用。有人能帮我创建这些方法吗?