Я знаю, что об этом уже спрашивали, но приведенные решения здесь не применимы.
Код, о котором идет речь, является простым классом:
class BitString(bits: List<Bit>) {
constructor(bits: List<Number>): this(bits.map(::Bit))
constructor(bits: List<Boolean>): this(bits.map(::Bit))
var bits = bits
}
Bit
- это класс, реализованный мной.
Однако я знакомлюсь:
Platform declaration clash: The following declarations have the same JVM signature (<init>(Ljava/util/List;)V):
constructor BitString(bits: List<Bit>) defined in BitString
constructor BitString(bits: List<Boolean>) defined in BitString
constructor BitString(bits: List<Number>) defined in BitString
Я предполагаю, что сгенерированный байт-код не различает различные специализированные списки, что кажется чем-то, что должно быть приоритетом для исправления, но ... очевидно, это не так.
Мой вопрос: как мне заставить этот код работать и, желательно, выглядеть красиво? Дело в том, что он должен принимать List
из Bit
, Number
или Boolean
, чтобы класс мог быть создан из широкого диапазона коллекций.