Hullaballoonatic
01/18/2019, 9:40 PMShawn
01/18/2019, 9:43 PMHullaballoonatic
01/18/2019, 9:44 PMclass SynchedPairs<K, V> {
val a = ArrayList<Pair<K, V>>()
val b = ArrayList<Pair<V, K>>()
operator fun get(key: K): V = a[key]
operator fun get(key: V): K = b[key]
}
Shawn
01/18/2019, 9:53 PMHullaballoonatic
01/18/2019, 9:54 PMShawn
01/18/2019, 9:54 PMgetK
and getV
Hullaballoonatic
01/18/2019, 9:55 PMShawn
01/18/2019, 9:55 PM@JvmName
would help here, but that’s maybe a bit of a stretchHullaballoonatic
01/18/2019, 9:55 PMShawn
01/18/2019, 9:58 PMHullaballoonatic
01/18/2019, 9:58 PMShawn
01/18/2019, 9:58 PM@JvmName
solution and it doesn’t give me compile errorsclass Test<K, V> {
val a = mutableMapOf<K, V>()
val b = mutableMapOf<V, K>()
@JvmName("getK")
operator fun get(key: K): V? = a[key]
@JvmName("getV")
operator fun get(key: V): K? = b[key]
}
Hullaballoonatic
01/18/2019, 9:59 PMShawn
01/18/2019, 9:59 PMHullaballoonatic
01/18/2019, 9:59 PMShawn
01/18/2019, 10:00 PMgetX
methods from JavaHullaballoonatic
01/18/2019, 10:00 PMShawn
01/18/2019, 10:01 PMHullaballoonatic
01/18/2019, 10:04 PM@JvmStatic
Shawn
01/18/2019, 10:05 PMHullaballoonatic
01/18/2019, 10:05 PMShawn
01/18/2019, 10:06 PM@Jvm*
ones are provided by the language to ease JVM interop problemsHullaballoonatic
01/18/2019, 10:07 PMShawn
01/18/2019, 10:07 PMHullaballoonatic
01/18/2019, 10:08 PMShawn
01/18/2019, 10:09 PMHullaballoonatic
01/18/2019, 10:13 PMShawn
01/18/2019, 10:15 PMHullaballoonatic
01/18/2019, 10:30 PMPavlo Liapota
01/18/2019, 10:33 PM@JvmName
if K
and V
will be the same type 🙂Hullaballoonatic
01/18/2019, 10:33 PMShawn
01/18/2019, 10:34 PMHullaballoonatic
01/18/2019, 10:34 PMShawn
01/18/2019, 10:34 PMHullaballoonatic
01/18/2019, 10:57 PMclass BidirectionalMap<K, V> {
val a = mutableMapOf<K, V>()
val b = mutableMapOf<V, K>()
operator fun get(key: K): V? = a[key]
@JvmName("getB")
operator fun get(key: V): K? = b[key]
operator fun set(key: K, value: V) {
a[key] = value
b[value] = key
}
@JvmName("setB")
operator fun set(key: V, value: K) {
b[key] = value
a[value] = key
}
operator fun contains(key: K): Boolean = a.containsKey(key)
@JvmName("containsB")
operator fun contains(key: V): Boolean = b.containsKey(key)
}
we'll see how this works