Android kotlin:无法使用继承调用接口方法
我有一个这样定义的接口Android kotlin:无法使用继承调用接口方法,android,inheritance,interface,kotlin,Android,Inheritance,Interface,Kotlin,我有一个这样定义的接口 interface ScannerAdapter<in P> where P : ScanParameters { fun scan(scanParameters: P): Single<Boolean> } 现在,当我尝试在Type1ScannerAdapter实例上调用scan函数时,得到的错误如下 扫描(捕获)无法应用于扫描(…扫描参数) 我如何调用函数: 我有一个适配器工厂,它返回Type1ScannerAdapter实例(基于某
interface ScannerAdapter<in P> where P : ScanParameters {
fun scan(scanParameters: P): Single<Boolean>
}
现在,当我尝试在Type1ScannerAdapter
实例上调用scan
函数时,得到的错误如下
扫描(捕获)无法应用于扫描(…扫描参数)
我如何调用函数:
我有一个适配器工厂,它返回Type1ScannerAdapter实例(基于某些逻辑)
所以我打电话来
adapterFactory.getAdapter().scan(getParams(scannerType))
private ScanParameters getParams(int scanType) {
switch(scanType){
case xyz:
return new Type1ScanParameters(....);
//
default:
return null;
}
}
如何解决此问题?就静态类型而言,
getParams(scannerType)
只返回ScanParameters
,编译器不知道在运行时它是否恰好是Type1ScanParameters
所以如果你知道
我有一个适配器工厂,它返回Type1ScannerAdapter实例(基于某些逻辑)
然后,
getParams
必须返回Type1ScanParameters
能否添加一些代码来显示如何调用scan
函数以及传递给此函数的参数?更新了有关如何调用scan的信息好奇:什么是Single
?从名字上,我感觉无论它做什么,都可能已经存在于标准库中。
sealed class ScanParameters
data class Type1ScanParameters(val somethingProbably: Unit): ScanParameters()
adapterFactory.getAdapter().scan(getParams(scannerType))
private ScanParameters getParams(int scanType) {
switch(scanType){
case xyz:
return new Type1ScanParameters(....);
//
default:
return null;
}
}