Size: a a a

2020 October 13

DS

Dmitry ShaDV in KotlinLangRu
Иван Иванов
а. нужно конструктор с параметрами, но без map
Проблемы как таковой нет, думал как сделать код лаконичнее. Да, преобразовать map конструктора в параметры. В голове вариант наследования с созданием своего конструктора:
class Dataset(
   value: Int,
   secondValue: String? = null
) : Dataset() {

   init {
       super.setValue(value)
       super.setSecondValue(secondValue)
   }

}
источник

QH

Quantum Harmonizer in KotlinLangRu
Иван Иванов
практика показывает, что влиятельность 0. если геттер-сеттер указан final, то его сразу расшивают до доступа к полю.
Ну это да, тут больше про скорость JIT-компиляции и память
источник

JI

Jalol Imomaddinov in KotlinLangRu
Quantum Harmonizer
а связь? У immutable тоже есть геттеры
Я имел ввиду безопасность.
Если поля сделать мутабельными, их можно из вне менять, а чтобы не допустить ошибок делают либо их иммутабл либо делать сеттер который может выбросить исключение.
А в случае lightweight classes если не будет сеттеров, тогда делать мутабл поля будет не совсем безопасно.
Поправьте если ошибаюсь
источник

ИИ

Иван Иванов... in KotlinLangRu
Dmitry ShaDV
Проблемы как таковой нет, думал как сделать код лаконичнее. Да, преобразовать map конструктора в параметры. В голове вариант наследования с созданием своего конструктора:
class Dataset(
   value: Int,
   secondValue: String? = null
) : Dataset() {

   init {
       super.setValue(value)
       super.setSecondValue(secondValue)
   }

}
Можно попробовать придумать какой-то класс таким образом.
class Ds(vararg values: Any?) : Dataset() {
   if (values.size > 0) setValue(values[0])
   if (values.size > 1) setSecondValue(values[1])
   if (values.size > 2) setThirdValue(values[2])
   if (values.size > 3) setFourthValue(values[3])
// и так далее до победного.
}
источник

QH

Quantum Harmonizer in KotlinLangRu
Иван Иванов
Можно попробовать придумать какой-то класс таким образом.
class Ds(vararg values: Any?) : Dataset() {
   if (values.size > 0) setValue(values[0])
   if (values.size > 1) setSecondValue(values[1])
   if (values.size > 2) setThirdValue(values[2])
   if (values.size > 3) setFourthValue(values[3])
// и так далее до победного.
}
брр, динамическая типизация
источник

ИИ

Иван Иванов... in KotlinLangRu
Quantum Harmonizer
брр, динамическая типизация
так это ж груви
источник

QH

Quantum Harmonizer in KotlinLangRu
Иван Иванов
так это ж груви
ну да, земля ему пухом, но мы ж из котлина вызываем
источник

DS

Dmitry ShaDV in KotlinLangRu
Иван Иванов
Можно попробовать придумать какой-то класс таким образом.
class Ds(vararg values: Any?) : Dataset() {
   if (values.size > 0) setValue(values[0])
   if (values.size > 1) setSecondValue(values[1])
   if (values.size > 2) setThirdValue(values[2])
   if (values.size > 3) setFourthValue(values[3])
// и так далее до победного.
}
Сомневаюсь что сработает. value и secondValue я привел как примеры, за которыми живут вполне себе определенные пропы. Такой вариант не даст гарантий что, например, в thirdValue, попадет именно то, что должно
источник

ИИ

Иван Иванов... in KotlinLangRu
Dmitry ShaDV
Сомневаюсь что сработает. value и secondValue я привел как примеры, за которыми живут вполне себе определенные пропы. Такой вариант не даст гарантий что, например, в thirdValue, попадет именно то, что должно
увы специфики работы с груви не знаю. поэтому только в качестве рассуждателя могу давать предложения.
а как в груви "пропы" организованы?
источник

DS

Dmitry ShaDV in KotlinLangRu
Иван Иванов
увы специфики работы с груви не знаю. поэтому только в качестве рассуждателя могу давать предложения.
а как в груви "пропы" организованы?
В этой конкретной библиотеке просто как getter/setter
источник

ИИ

Иван Иванов... in KotlinLangRu
Jalol Imomaddinov
Я имел ввиду безопасность.
Если поля сделать мутабельными, их можно из вне менять, а чтобы не допустить ошибок делают либо их иммутабл либо делать сеттер который может выбросить исключение.
А в случае lightweight classes если не будет сеттеров, тогда делать мутабл поля будет не совсем безопасно.
Поправьте если ошибаюсь
ну, на то они и лайтвейт aka классы структур, а не по умолчанию. дать возможность "небезопасного" (с возможностью присваивать) использования но лёгкого по размеру
источник

ИИ

Иван Иванов... in KotlinLangRu
Dmitry ShaDV
В этой конкретной библиотеке просто как getter/setter
описание неясное. геттер и сеттер чего?
источник

DS

Dmitry ShaDV in KotlinLangRu
Иван Иванов
описание неясное. геттер и сеттер чего?
1 из "пропов", например:
/**
* Server host and port for connection url
*/
String getConnectHost() { params.connectHost as String }
/**
* Server host and port for connection url
*/
void setConnectHost(String value) { params.connectHost = value }
источник

ИИ

Иван Иванов... in KotlinLangRu
Кстати, по поводу компактных классов. Java тоже ввела записи. Но это аналог data class.

Но тем не менее это открывает возможность в Jar файлы добавлять сокращённую информацию.
источник

JI

Jalol Imomaddinov in KotlinLangRu
Иван Иванов
Кстати, по поводу компактных классов. Java тоже ввела записи. Но это аналог data class.

Но тем не менее это открывает возможность в Jar файлы добавлять сокращённую информацию.
Слышал что у него проблемы с интерграцией hibernate, так как все поля final, нет пустого конструктора и тп
источник

QH

Quantum Harmonizer in KotlinLangRu
Jalol Imomaddinov
Слышал что у него проблемы с интерграцией hibernate, так как все поля final, нет пустого конструктора и тп
Hibernate сами себе злобные буратины, ужасная библиотека.
источник

ИИ

Иван Иванов... in KotlinLangRu
Jalol Imomaddinov
Слышал что у него проблемы с интерграцией hibernate, так как все поля final, нет пустого конструктора и тп
это проблемы хибернейта)
источник

JI

Jalol Imomaddinov in KotlinLangRu
Quantum Harmonizer
Hibernate сами себе злобные буратины, ужасная библиотека.
Не могу не согласится))
источник

ИИ

Иван Иванов... in KotlinLangRu
Dmitry ShaDV
1 из "пропов", например:
/**
* Server host and port for connection url
*/
String getConnectHost() { params.connectHost as String }
/**
* Server host and port for connection url
*/
void setConnectHost(String value) { params.connectHost = value }
Боюсь завести в дебри.
Сегодня Майк рассказал, что как-то можно делать динамические структуры с доступом к полям, а не по строковому имени. Так что он тут более спец
источник

ИИ

Иван Иванов... in KotlinLangRu
Jalol Imomaddinov
Слышал что у него проблемы с интерграцией hibernate, так как все поля final, нет пустого конструктора и тп
Мне кажется, бест практайс -- это выбрать самый жирный (с наибольшим количеством параметров) конструктор и по нему сразу инициализировать объект
источник