по сравнению с другими языками.
Думаю можно использовать альтернативу на sealed classes и f-bounded polymorphism и ничего не потерять:
sealed class Request<T : Request<T>>
class CaseA(val param1: Any = Any()) : Request<CaseA>()
class CaseB(val param2: Any = Any()) : Request<CaseB>()
interface Processable<T : Request<T>> {
fun process(request: T)
}
class CaseAProcessing : Processable<CaseA> {
override fun process(request: CaseA) {
request.param1
}
}
class CaseBProcessing : Processable<CaseB> {
override fun process(request: CaseB) {
request.param2
}
}
val test = CaseAProcessing().process(CaseA())
Ой, зачем эти страшные костыли? Это ж не Джава, всё-таки.
Обсуждают сегодня