Я ломаю себе голову, и я не смог придумать решение для этого. Я читал Generics в Kotlin и пытался что-то сделать, но не смог узнать.
У меня базовый интерфейс A
. B
и C
- это интерфейсы, наследующие A
. ObjB
фактически наследует B
и реализует методы. Я пытаюсь создать кеш объектов, расширяющих A
, и использовать извлечение, чтобы различать объекты B
и C
. К сожалению, я не смог добиться большого прогресса. Я пробовал использовать out
в A
, но это привело к другим проблемам.
interface A<T> {
fun value() : String
}
interface B : A<B> {
fun valueB() : String
}
interface C : A<C> {
fun valueC() : String
}
class ObjB : B {
override fun value() : String {
return "B"
}
override fun valueB() : String {
return "objB"
}
}
class AllTogether {
val cache : ConcurrentHashMap<String, A<Any>> = ConcurrentHashMap()
fun retrieveB(val: String) : B {
// return cache.get(val)
}
}