我的 SDK 公开了一个只有静态方法的 Java 接口,例如
public interface MyDevice {
public static void setLocation(Location location) {…}
public static Location getLocation() {…}
}
在使用 SDK 的 Java 应用程序中,我的客户可以像使用单例一样使用它们,例如
Location currentLocation = MyDevice.getLocation();
当这个 SDK 被集成到 Kotlin 应用程序中时,很自然地将其表达为属性:
val currentLocation = MyDevice.location
问题是,这个内置的互操作只适用于非静态方法。
我可以在 Kotlin 中创建一个单例并让它处理翻译:
object myDevice {
var location: Location
get() = MyDevice.getLocation()
set(location) = MyDevice.setLocation(location)
}
但是,在其他纯 Java SDK 中的这个 Kotlin 文件不会对不使用 Kotlin 的客户产生负面影响吗?可以用Java表达吗?
或者我应该简单地将MyDevice.java转换为 Kotlin?对于仍在使用 Java 的客户,这样的步骤会有什么负面影响?