Size: a a a

2021 January 08

p

podocodenick in KotlinLangRu
Leonid
Мультитон должен уметь создавать и хранить по одному экземпляру других классов. Так?
по одному экземпляру одного и того же класса
источник

p

podocodenick in KotlinLangRu
нет, давайте проще короче) вот у меня есть допустим синглтон который хранит один инстанс
мне стало нужно например 2 инстанса
источник

p

podocodenick in KotlinLangRu
я же не буду делать два object и писать в них одно и то же?
источник

L

Leonid in KotlinLangRu
podocodenick
по одному экземпляру одного и того же класса
В hash map держать экземпляры. Добавлять однократно по getSomething().
Хэш синхронизировать на всякий случай
источник

IM

Igor Mikhailov in KotlinLangRu
Если котлин под JVM, то можно что то такое, на точность кода не претендую просто как пример:
class Multitone {
   companion object {
       private val map = ConcurrentHashMap<Int, Multitone>()
       fun getInstance(i: Int) = map.computeIfAbsent(1) {
           Multitone()
       }
   }
}
источник

L

Leonid in KotlinLangRu
Если в хэше этот ключ есть, возвращаем, иначе создаём и возвращаем.
источник

L

Leonid in KotlinLangRu
Во во
источник

p

podocodenick in KotlinLangRu
Leonid
Если в хэше этот ключ есть, возвращаем, иначе создаём и возвращаем.
на Java полный рабочий пример есть, я выше кинул. речь о том как дефолтный конвертированный идеей котлин код переписать чтобы было не стыдно
источник

p

podocodenick in KotlinLangRu
Igor Mikhailov
Если котлин под JVM, то можно что то такое, на точность кода не претендую просто как пример:
class Multitone {
   companion object {
       private val map = ConcurrentHashMap<Int, Multitone>()
       fun getInstance(i: Int) = map.computeIfAbsent(1) {
           Multitone()
       }
   }
}
computeIfAbsent? почитаю, пасиба
источник

JI

Jalol Imomaddinov in KotlinLangRu
Благодарю вас, только что познакомился с новым паттерном🙃
источник

L

Leonid in KotlinLangRu
podocodenick
на Java полный рабочий пример есть, я выше кинул. речь о том как дефолтный конвертированный идеей котлин код переписать чтобы было не стыдно
Не обязательно конвертированный код будет оптимальным с точки зрения котлина. Толку его исправлять, если нет полного понимания? А если оно есть, тогда пиши сразу на котлине.
источник

L

Leonid in KotlinLangRu
Вон там у тебя и volatile и JVM static, а зачем?
источник

p

podocodenick in KotlinLangRu
Leonid
Вон там у тебя и volatile и JVM static, а зачем?
чтобы обезопасить от многопоточности и вызывалось с джавы
источник

L

Leonid in KotlinLangRu
podocodenick
чтобы обезопасить от многопоточности и вызывалось с джавы
Ы???
источник

L

Leonid in KotlinLangRu
Есть хэш мап с защитой.
источник

p

podocodenick in KotlinLangRu
я пока ес честно суть мапы тут не понимаю, здесь обычный массив подойдет
источник

L

Leonid in KotlinLangRu
Мап даёт возможность быстро получить значение по ключу. Кроме того, можно проверить есть ли уже в мапе у ключа значение. И не писать костыли 😊
источник

JI

Jalol Imomaddinov in KotlinLangRu
podocodenick
я пока ес честно суть мапы тут не понимаю, здесь обычный массив подойдет
Как я понял, суть мапы в его защите, можете без volatile и synchronized пользоваться и не бояться :)
источник

p

podocodenick in KotlinLangRu
Leonid
Мап даёт возможность быстро получить значение по ключу. Кроме того, можно проверить есть ли уже в мапе у ключа значение. И не писать костыли 😊
ну у меня ключ=индекс, то есть либо 0 либо 1.
то есть тут массива хватит
источник

p

podocodenick in KotlinLangRu
Jalol Imomaddinov
Как я понял, суть мапы в его защите, можете без volatile и synchronized пользоваться и не бояться :)
ага, понял
источник