如何将Kotlin代码转换为Java?请转换指定的MapObjectTapListener代码
Kotlin匿名类转Java代码修正
原Kotlin代码
private val mapObjectTapListener = object : MapObjectTapListener { override fun onMapObjectTap(mapObject: MapObject, point: Point): Boolean{ Toast.makeText(applicationContext, "Эрмитаж — музей изобразительных искусств", Toast.LENGTH_SHORT).show() return true; } }
你的Java代码存在的问题
- 变量类型错误:
mapObjectTapListener是MapObjectTapListener类型,不能用void声明 - 匿名类写法错误:Java中实现接口的匿名类必须用
new MapObjectTapListener()格式 - 方法参数缺少类型声明:
onMapObjectTap的两个参数必须显式写出类型 - 成员变量的初始化逻辑不符合Java语法规范
正确的Java代码
private final MapObjectTapListener mapObjectTapListener = new MapObjectTapListener() { @Override public boolean onMapObjectTap(MapObject mapObject, Point point) { Toast.makeText(getApplicationContext(), "Эрмитаж — музей изобразительных искусств", Toast.LENGTH_SHORT).show(); return true; } };
关键转换说明
- Kotlin里
object : 接口名的匿名内部类写法,对应Java的new 接口名() { ... }实现 - Kotlin的
val是只读变量,对应Java的private final修饰符 - Java方法参数必须显式声明类型,无法像Kotlin那样省略
- 若在Activity中,
applicationContext通常用getApplicationContext()获取(如果原Kotlin代码中applicationContext已直接可用,也可保留原写法)
内容的提问来源于stack exchange,提问作者Иван Александров
相关产品推荐
相关产品推荐

