My SDK exposes a Java interface that has only static methods, e.g.
public interface MyDevice {
public static void setLocation(Location location) {…}
public static Location getLocation() {…}
}
In Java app that uses the SDK, my customers can use these as if it were a singleton, e.g.
Location currentLocation = MyDevice.getLocation();
When this SDK is integrated into a Kotlin app, it would be natural to express the same as a property:
val currentLocation = MyDevice.location
The problem is, this built-in interop works for non-static methods only.
I can create a singleton in Kotlin and have it handle the translation:
object myDevice {
var location: Location
get() = MyDevice.getLocation()
set(location) = MyDevice.setLocation(location)
}
But won't this single Kotlin file in an otherwise Java-only SDK negatively affect the customers who don't use Kotlin? Can the same be expressed in Java?
Or maybe I should simply convert MyDevice.java to Kotlin? What will be negative effects of such step for the customers who are still on Java?