java - 在 kotlin 中创建 Lambda 函数
问题描述
我正在努力将我的 java 代码转换为 kotlin 代码,但我陷入了无法转换我之前编写的 lambda 函数的地步
class Utils {
interface Callback {
void onResult(MediaCodecInfo[] infos);
}
static final class EncoderFinder extends AsyncTask<String, Void, MediaCodecInfo[]> {
private Callback func;
EncoderFinder(Callback func) {
this.func = func;
}
@Override
protected MediaCodecInfo[] doInBackground(String... mimeTypes) {
return findEncodersByType(mimeTypes[0]);
}
@Override
protected void onPostExecute(MediaCodecInfo[] mediaCodecInfos) {
func.onResult(mediaCodecInfos);
}
}
static void findEncodersByTypeAsync(String mimeType, Callback callback) {
new EncoderFinder(callback).execute(mimeType);
}
}
这就是我在 Java 的 MainActivity 中使用它的方式
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Utils.findEncodersByTypeAsync("abc", infos -> {
useInfos(infos);
});
}
}
我在 Kotlin 中的 Utils 课程
object Utils {
internal interface Callback {
fun onResult(infos: Array<MediaCodecInfo?>?)
}
internal class EncoderFinder(func : Callback) : AsyncTask<String,Void,Array<MediaCodecInfo?>?>(){
var func : Callback = func
override fun doInBackground(vararg params: String?): Array<MediaCodecInfo?>? {
return findEncodersByType(params[0])
}
override fun onPostExecute(result: Array<MediaCodecInfo?>?) {
func.onResult(result)
}
}
internal fun findEncodersByTypeAsync(mimeType: String?, callback: Callback){
EncoderFinder(callback).execute(mimeType)
}
}
我怎样才能在 kotlin 中仅在 MainActivity 中实现相同的功能,我们将不胜感激。
解决方案
Utils.findEncodersByTypeAsync("abc") { useInfos(it) }
推荐阅读
- java - 如何让片段在主活动中显示之前从服务中加载数据?
- node.js - 快递:当接受编码为“gzip,放气”时,req.body 为空
- swift - binding NSPopupbutton to an array of classes
- python - Reading columns from csv with no labels in Pandas
- java - Converting LinkedHashSet to ArrayList or just using ArrayList
- xamarin - 我的 CarouselViewControl 在 ItemSource 中阻止捏合和平移手势
- reactjs - 创建本地 ReactJS 库并将其导入另一个项目(使用 npm)
- file - 将特定行从一个文件复制到另一个文件的 unix 命令是什么?
- c++ - How to recover the ParserRuleContext for a specific line and character position with antlr4?
- android - 使用可下载字体 E/Minikin 时出错:addFont 未能创建字体