В Java я могу сделать что-то вроде этого:Как определить параметры типа для основного конструктора в Котлине?
import java.util.List;
import java.util.Map;
class Foo {
public final String s;
// Parameters to constructor are generic, but constrained
public <K> Foo(List<K> list, Map<K, String> map) {
// Compute something from those parameters where result
// has type independent of input type parameters.
StringBuilder sb = new StringBuilder();
for (K k : list) {
sb.append(map.get(k));
}
s = sb.toString();
}
}
Обратите внимание, что Foo
класса не имеют параметров типа, но его конструктор имеет тип параметров. Можно ли сделать что-то подобное в Котлине?
У вас есть случай использования в виде, что требует это вместо того, воспроизведенных на самом классе? Какова цель дженериков, которые не ограничивают ничего в конструкторе? –
@JaysonMinard Это был урезанный пример, чтобы попытаться сохранить все просто, но, видимо, я зашел слишком далеко. Я изменил пример на нечто более реалистичное, что, надеюсь, иллюстрирует, почему мне могут понадобиться параметры типа конструктора, которые не превращаются в параметры типа класса. –
Я думаю, что предложение @ yole охватывает ваш случай, фабричный метод., –