Хочу сделать клас более гибким при помощи 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()
.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
При отправки JSON пакета с отдельного HTML файла на Java Spring RestController при помощи jQuery, java выдает предупреждение :
Мне требуется корректировать данные в некотором TextField непосредственно в процессе вводаЧего конкретно я пытаюсь достичь:
Нуждаюсь в пояснении синтаксиса "системных команд" для параметра метода exec()