Решение, которое я нашел, состояло в том, чтобы принять проекцию звезды Super<*>
, а затем разыграть ее, когда я получу к ней доступ:
@Component
class MyService(
private val subs: List<Super<*>>
) {
@Suppress("UNCHECKED_CAST")
fun getSub(): List<Super<SomeType>>? = subs[0] as List<Super<SomeType>>
}
Это работает, но я не влюблен в это, потому что я должен сделать непроверенный актерский состав. Я также не могу выполнить проверенное приведение, потому что благодаря стиранию я не могу определить общий тип (например, is Super<SomeType>
).
Поскольку Super
имеет границы SomeType
, это не особо опасно, просто безобразно.
Будем признательны за предложения или лучшее решение.