Вам необходимо использовать универсальный шаблон с предложением where
, как описано в руководстве Kotlin .Для вашего случая использования это будет выглядеть так:
fun <T> membershipSelected(membershipSelected: List<T>): ReturnType
where T : MembershipType,
T : IRateOption {
// function body
}
Или с сокращенным синтаксисом:
fun <T> membershipSelected(membershipSelected: List<T>) where T : MembershipType, T : IRateOption = // function body
Редактировать : Это решение будет работать, только если всеэлементы в параметре имеют одинаковый тип.Это означает, что вы не сможете использовать два отдельных класса / объекта, которые являются подтипами MembershipType
и IRateOption
.Если вам нужно такое поведение, я бы порекомендовал создать открытый или абстрактный класс, например:
abstract class RateMembershipType(...) : MembershipType(...), IRateOption
object GOLD: RateMembershipType(...)
object BRONZE: MembershipType(...)
fun membershipSelected(membershipSelected: List<RateMembershipType>) = ...