Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android kotlin:无法使用继承调用接口方法_Android_Inheritance_Interface_Kotlin - Fatal编程技术网

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;
        }

    }