Хочу сделать клас более гибким при помощи generics
в kotlin
. Ранее использовал их только в java
и в очень примитивных случаях. Перечитал документацию от jetBrains
но это ясности не дало. Пробовал так:
abstract class GraphWrapper<T>(var graphView: GraphView){
...
private var lineGraphSeries = HashMap<String, T>()
}
Как использовать правильно дженерики в котлине?
UPD: Вопрос немного изменился. Каким образом возможно создать обьект типа Т?
В этом плане Kotlin не сильно отличается от Java. В java обычно для этого используют паттерн абстрактная фабрика:
interface AbstractFactory<T> {
fun create(): T
}
Реализацию этой фабрики передают объекту который будут внутри созываться объекты нужного типа:
abstract class GraphWrapper<T>(var graphView: GraphView, private val factory: AbstractFactory<T>){
...
private var lineGraphSeries = HashMap<String, T>()
fun appendNew(alias: String) {
lineGraphSeries.put(alias, factory.create());
}
}
Либо условливаются, что объекты T обязательно должны содержать конструктор без аргументов и тогда достаточно передать Class<T> clazz
, у которого для создания экземпляров вызывают clazz.newInstance()
.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
При отправки JSON пакета с отдельного HTML файла на Java Spring RestController при помощи jQuery, java выдает предупреждение :
Мне требуется корректировать данные в некотором TextField непосредственно в процессе вводаЧего конкретно я пытаюсь достичь:
Нуждаюсь в пояснении синтаксиса "системных команд" для параметра метода exec()