Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.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
如何将类类型传递给kotlin中的函数?_Kotlin - Fatal编程技术网

如何将类类型传递给kotlin中的函数?

如何将类类型传递给kotlin中的函数?,kotlin,Kotlin,我有一个函数来确定列表是否包含指定的gpuimage筛选器类型,要将参数:gpuimagestationfilter传递给函数,函数使用它执行以下操作: public var filters: GPUImageFilterGroup //filterClass:the specified gpuimage filter type extend GPUImageFilter public fun getFilter(filterClass:the specified gpuimage filte

我有一个函数来确定列表是否包含指定的gpuimage筛选器类型,要将参数:
gpuimagestationfilter
传递给函数,函数使用它执行以下操作:

public var filters: GPUImageFilterGroup

//filterClass:the specified gpuimage filter type extend GPUImageFilter
public fun getFilter(filterClass:the specified gpuimage filter type):GPUImageFilter {
        //filters.filters is a List<GPUImageFilter>
        filters.filters.forEach {
            if (it is filterClass) {
                 return it
            }
        }
}

如果希望在运行时确定
filterClass

public fun getFilter(filterClass: KClass<out GPUImageFilter>): GPUImageFilter? {
    //filters.filters is a List<GPUImageFilter>
    return filters.filters.first { filterClass.isInstance(it) }
}
致电:

getFilter(GPUImageSaturationFilter::class)
看。您还可以使用和

您也可以这样做(假设您已经用
KClass
定义了其中一个版本,否则您可以用
它是T
来代替
过滤器类。isInstance(it)
):

public-inline-fun-getFilter()=getFilter(T::class)
getFilter()

如果希望在运行时确定
过滤器类

public fun getFilter(filterClass: KClass<out GPUImageFilter>): GPUImageFilter? {
    //filters.filters is a List<GPUImageFilter>
    return filters.filters.first { filterClass.isInstance(it) }
}
致电:

getFilter(GPUImageSaturationFilter::class)
看。您还可以使用和

您也可以这样做(假设您已经用
KClass
定义了其中一个版本,否则您可以用
它是T
来代替
过滤器类。isInstance(it)
):

public-inline-fun-getFilter()=getFilter(T::class)
getFilter()
getFilter(GPUImageSaturationFilter::class.java)
public inline fun <reified T : GPUImageFilter> getFilter() = getFilter(T::class)

getFilter<GPUImageSaturationFilter>()