我正在尝试使用泛型参数创建一个抽象类,它将具有应该调用方法而不必指定类型参数的子类.到目前为止我有这个:
abstract class AbstractClass<T : Any> @Autowired constructor(protected val delegate: MyService) {
inline fun <T: Any> myMethod(param: Any): T? {
return delegate.myMethod(param).`as`(T::class.java)
}
}
Run Code Online (Sandbox Code Playgroud)
并实施:
class TesterWork @Autowired constructor(delegate: MyService) : AbstractClass<Tester>(delegate) {
}
Run Code Online (Sandbox Code Playgroud)
现在在调用时myMethod
我必须指定类型参数:
testerWork.myMethod<Tester>("test")
Run Code Online (Sandbox Code Playgroud)
我想知道是否可以自动推断出类型参数?我可以以某种方式重写myMethod吗?请注意,我需要T::class.java
在方法内部.