如何将类类型传递给kotlin中的函数?
我有一个函数来确定列表是否包含指定的gpuimage筛选器类型,要将参数:如何将类类型传递给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
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>()