Возможно ли приведение типов для удовлетворения ограничений нескольких типов в kotlin?
Скажем, у меня есть следующий случай, но я хочу избежать приведения типов к классу C
(если несколько классов реализуют A
и B
или я не знаю тип C
):
interface A
interface B
class C: A, B
fun <T> foo(bar: T) where T: A, T: B {
}
Можно ли одновременно набирать A
и B
?Умный актерский состав, кажется, не позволяет этого.Могу ли я как-нибудь вручную привести?
val c = C()
foo(c) // works
val d: Any = c
if (d is A && d is B) {
foo(d) // smart cast doesn't work here, compiler error
}
// Something like this maybe?
foo(d as A && B)
Я знаю, что это возможно, создав новый интерфейс, который наследует от A
и B
, и затем использую его, но это может быть невозможно, если я наденуне контролирует рассматриваемые классы.
Спасибо