@jvmchat

Страница 2746 из 2890
Rushan
21.08.2018
20:03:24
кинь мне, я перешлю

Maxim
21.08.2018
22:34:03
Народ, как в Java нормально реализовать Null Object для Enum? Если я просто добавляю новую константу в Enum, скажем NONE, то она просвечивает через метод values(), чего очень бы не хотелось, а переопределить его нельзя.

baylrock
21.08.2018
22:44:12
Ну удали из values

Google
baylrock
21.08.2018
22:44:34
Правда потом тебя уволят

Maxim
21.08.2018
22:44:34
Ну вот есть у тебя некий список, хранящийся в Enum. Скажем ты не хочешь бросать исключение из valueOf если кто-то попытается получить элемент этого списка задав неправильное имя. Чтобы не возвращать null можно вернуть некий Null Object, который придется определить в этом же Enum. Но это значит что values всегда будет возвращать его вместе с корректными значениями.

Baruch
21.08.2018
22:44:39
народ, в четверг эфир! Готовьтесь, будем общаться с чатиком! https://www.facebook.com/events/1831612610287639/

Maxim
21.08.2018
22:45:06
Ну удали из values
Ты прям решил проблему, спасибо!

baylrock
21.08.2018
22:46:12
values() [ 0]=null

Вобще сделав свой гет бай ид и там бросай что хочешь

values() [ 0]=null
Это шутка. Но если хочешь так то рефлекс или храни урезаную копию и опять же свой геттер

Maxim
21.08.2018
22:54:41
Это шутка. Но если хочешь так то рефлекс или храни урезаную копию и опять же свой геттер
Смешно. Я даже проверять полез, думал может чего не понимаю. Понятно, что вместо values() всегда можно звать свой метод, только это никак не защищает меня от того, что кто-то когда-то забудет о наличии этого Null Object и просто позовет values()

baylrock
21.08.2018
22:55:18
Ну если ты для себя пишешь то норм

values() делает эрей копи каждый раз

И что бы достичь некого воображаемого перфа после инита делают копию 1 раз и к ней доступ через геттер

Так что небоись

Maxim
21.08.2018
22:58:49
Вот это тоже шутка сейчас была? Я такого никогда не видел. Какой смысл делать array copy, если Enum в Java иммутабелен до мозга кости?

Google
baylrock
21.08.2018
22:59:09
Массивы не имутабельны

Сам инстанс да недоступен

Но ячейки изменяйте как хочешь

Так что бы защитить массив его копируют

И при енумах в овер 999 значений действительно стоит копировать и хранить свою копию

Maxim
21.08.2018
23:01:00
Массивы не имутабельны
В таком контексте никогда об этом не думал. Спасибо, будет над чем поразмыслить.

baylrock
21.08.2018
23:01:02
Если часто обращаешься к массиву само собой

Ну это обычный финал инстанс

Его неперезаписать

Но поля можно редачить

Maxim
21.08.2018
23:02:14
Хреново, конечно, что values() так просвечивает. И ничего с этим не поделаешь.

baylrock
21.08.2018
23:02:35
Можешь делегировать доступ

Не давай енум в внешнее по льзование

Maxim
21.08.2018
23:03:31
Можешь делегировать доступ
Да, это теперь еще одна вещь, которую всегда надо будет держать в голове при работе с Enum.

baylrock
21.08.2018
23:04:04
Мелочь, привыкнешь

Чёт не впервой это слышу про енум

Artjom
22.08.2018
05:16:43
а зачем вообще нулл обжект для енума ?

Maxim
22.08.2018
06:12:47
Просто сравнивать на null, не? Или задавать дефолтные значения. В чем проблема-то?
Вся суть Null Object паттерна в том, чтобы не иметь дел с null

Google
Maxim
22.08.2018
06:14:06
а зачем вообще нулл обжект для енума ?
Затем же, зачем он нужен в других случаях. Чтобы не возвращать Optional когда делаешь поиск по значениям Enum.

Akim
22.08.2018
06:15:40
Вся суть Null Object паттерна в том, чтобы не иметь дел с null
заведите отдельную функцию поиска, как советовали ранее, или введите в предметную область значение enum, обозначающее ничего.

Artjom
22.08.2018
06:15:47
По дефалту возвращай какой нибудь None

Не вижу особого смысла запариватся на нулл обьекте енуме

Maxim
22.08.2018
06:17:26
По дефалту возвращай какой нибудь None
Ну теперь то, благодаря @baylrock я понимаю, что это, пожалуй, лучший выход. Учитывая накладные расходы на вызов values() ним вообще лучше не пользоваться. Я не был в курсе такого поведения. Оно, конечно, на поверхности, но просто никогда не задумывался и не сталкивался ни на практике ни в литературе.

Artjom
22.08.2018
06:17:50
Можно скалу или котлин заиспользовать

Maxim
22.08.2018
06:18:22
Ни того процитировал, ну да ладно.

ЕВГЕНИЙ
22.08.2018
06:18:38


Maxim
22.08.2018
06:36:17
Нашел на Quora интересный ответ с оберткой поверх Enum для такого случая: http://qr.ae/TUNhSc Выглядит годно, но на практике как-то уж слишком много сущностей.

Роман
22.08.2018
06:39:45
вообще как по мне годно создать empty объекты, для этого даже в Guava есть специальный метод создающий список который не принимает null

Maxim
22.08.2018
06:59:35
Добавь NONE или DEFAULT константу и свои кастомные методы of, all. Мы так делали.
Спасибо, так и сделаю. Меня при этом напрягает наличие values(), от вызова которого никак не защититься.

Роман
22.08.2018
07:07:55
а переопределить его разве нельзя?

Vladimir
22.08.2018
07:09:02
он статический

Роман
22.08.2018
07:10:40
а да, точно

Митко Соловец?
22.08.2018
07:14:05
Igor
22.08.2018
07:49:26
Какой сейчас есть бесплатный свособ собрать нативную сборку java приложения? - Ексельсеор платный - graal только под линукс (надо макос) - robovm не может собрать java8.

Admin
ERROR: S client not available

Google
Igor
22.08.2018
07:51:53
Да бинарь, что бы одним файлом x64 распространять

Denis
22.08.2018
08:15:10
А собирается полностью в автономный пакет? Со всем своим барахлом? Т.е потом ничего дополнительно ставить не надо?

Константин
22.08.2018
09:32:35
Ребят, кто-то работал с 2х стороним SSL? Есть сертификат сервера, клиентский, добавлял их в cacerts и грузил только два этих сертификата в коде, и все-равно получаю `java.security.cert.CertificateException: No subject alternative names present` в чем может быть проблема?

Константин
22.08.2018
09:48:48
Vladimir
22.08.2018
09:49:36
Да
Тогда, видимо, в серверном сертификате не указано имя сервера в поле subjectAltName, а оно должно там быть

Vladimir
22.08.2018
09:56:11
а если его там нет, обойти это можно?
Ну это будет сложнее, чем просто закинуть сертификат куда-то. Надо подставлять свою реализацию проверки сервера, а как это делать, зависит от того, как устанавливается соединение.

Павел
22.08.2018
11:49:55
Народ есть hz.jar в папке /opt и нужно его запустить. В класспас джава 1.7 нужна 1.8. Джава 1.8 скачана и лежит в соседней папке. Как запустить джарку с укащанием конкретной версии джава? Помогите)

Я не линуксоид

Поэтому хз

Igor
22.08.2018
11:52:22
так и пишеш /opt/java8/bin/java -jar /opt/hz.jar

Павел
22.08.2018
11:54:33
так и пишеш /opt/java8/bin/java -jar /opt/hz.jar
Спасибоооо. Завелась?

Bogdan
22.08.2018
13:17:52
Спасибоооо. Завелась?
Можно sh файл сделать (туда эту команду прописать), sh это bat

Евгений
22.08.2018
13:50:32
>sh это bat

Bogdan
22.08.2018
13:51:15
>sh это bat
Ну в простом понимании ??

Aleksandr
22.08.2018
14:20:02
Привет всем. Что можно почитать/посмотреть про спринг, чтобы потихоньку въезжать, что это такое?

Aleksander
22.08.2018
14:20:56
Google
Денис
22.08.2018
14:22:15
https://spring.io/guides
Справедливости ради, это всё для того, чтобы начать писать, а не понимать в основном

Гайды приятные, но не для того

Евгений
22.08.2018
14:22:53
Справедливости ради, это всё для того, чтобы начать писать, а не понимать в основном
ну что бы понимать, придется в документацию углубляться

Денис
22.08.2018
14:23:02
Какой-то хай-левел обзор того, что из себя представляет спринг, вполне можно обеспечить и без глубинного курения манов

Евгений
22.08.2018
14:24:05
что там обозревать? спринг это фреймворк для построения приложений

Митко Соловец?
22.08.2018
14:24:06
читайте референсы с первой главы

все

Страница 2746 из 2890