Андрей
смысл этих домножений?
Anna
public int hashCode() { int result = user.hashCode(); result = 31 * result + visibility.hashCode(); return result; }
https://www.mkyong.com/java/java-how-to-overrides-equals-and-hashcode/ пункт 2 Classic way
Anonymous
да. часто было
а как решили проблему если не секрет?
Андрей
https://www.mkyong.com/java/java-how-to-overrides-equals-and-hashcode/ пункт 2 Classic way
ну тем не менее всё же лучше не городить велосипед, а либо котлин + дата классы использовать, либо какой-нибудь lombok использовать
Андрей
если так для каждого класса писать, то состариться можно
Сергій
cmd + n => generate equals and hashcode
Anna
это не надо руками имплемментить. студия же сама их правильно генерить умеет
сейчас попробую. сгенерировало не так... @Override public boolean equals(Object o) { if (this == o) return true; if (!(o instanceof Data)) return false; Data data = (Data) o; return Objects.equals(getUser(), data.getUser()) && Objects.equals(getVisibility(), data.getVisibility()); } @Override public int hashCode() { return Objects.hash(getUser(), getVisibility()); }
Alexander
что имеется в виду под "не так"?
Alexander
и кстати для Visibility и User тоже надо переопределить
Anna
что имеется в виду под "не так"?
по-другому. в смысле и правда отличается. вложения переопределю
Alexander
👍
Alexander
такие штуки лучше генерить чем-то, руками очень вероятна ошибка
Anna
а вообще хотелось попробовать разные способы
Anna
т.к. есть время на эксперименты
Andrew
Народ, кто подскажет, при создании репозитория для проекта не создался файл .gitignore и теперь при каждой сборке в изменения показывает кучу ненужных файлов. Как исправить эту ситуацию,
Andrew
?
Alexander
так а что тут экспериментировать?) надо просто понять зачем эти методы и разобраться в релизации, что предлагает студия) готово, вы великолепны
Mike
MultiDexApplication класс это альтернатива тому что я могу просто в build gradle включить его ?
нет, в флаг в билде отвечает за сборку, а класс — за использование на API<21
Mike
смысл этих домножений?
нафиг хэш-коды, главное знать ырыкс и DI-фреймворки
Mike
gson
с какими-то особенными настройками? Он же по дефолту и без @Expose сериализует.
Mike
есть где serialize = false или deserialize = false
если аннотация не стоит и Gson настроен стандартно, то он сериализует
Anna
с какими-то особенными настройками? Он же по дефолту и без @Expose сериализует.
даже не обращала на это внимание. если без экспоуз увеличит производительность?
Vadim
нет, в флаг в билде отвечает за сборку, а класс — за использование на API<21
да, благодарю, уже дорыл здесь) https://developer.android.com/studio/build/multidex
Anna
уменьшит количество мусора в коде
ok. благодарю. поубираю :) как раз во время, стабилизационный спринт :)
Anna
Mike
А вообще, Gson со стандартными адаптерами — это очень грустно, т. к. не умеет использовать конструкторы и провоцирует на изменяемые объекты, дефолтные значения и прочие костыли.
Anonymous
ребята, а у вас в проектах androidTest прогоняются на сборках с выключенным прогвардом?
Mike
а как можно сделать лучше? то есть какие альтернативы?
Не знаю. Jackson умеет в конструкторы, но он огромный, 12к методов. Я пользуюсь своим (достаточно уродливым) адаптером. https://github.com/Miha-x64/gson-constructor-type-adapter-factory Пока вынашиваю совсем другую идею, без Gson.
Mike
если этот объект отражает распарсенные данные, какой смысл его изменять?
Anna
А, во. Зачем сеттеры и clone()?
это объект пользовательских настроек. сначала приходит "оригинал", я его клонирую и изменяю, потом сравниваю. сеттерами добавляю другие данные с интерфеса
Anna
А, во. Зачем сеттеры и clone()?
по пользовательскому флоу есть такая штука со всех экранов: а вы хотите сохранить изменения?
Mike
я бы вместо этого всего сделал copy constructor
или метод copy, как в дата-классах котлина
Anna
я бы вместо этого всего сделал copy constructor
а можно примерчик? очень интересно. узнала что нужно избегать клонабл уже после того как его имплементировала. как альтернативу теперь вижу билдер, но у меня довольно много полей. Вы имеете в виду билдер?
Mike
Тууу, рефакторить. Если сущность такая, то ничего не поделаешь
делать подсущности лучше, чем обмазываться билдерами
Kanstantsin
так в примере два поля
Kanstantsin
это уже много ?
Mike
так это пример)
Kanstantsin
так а в реальности сколько
Kanstantsin
у меня перед глазами пример
Kanstantsin
только
Ivansuper
делать подсущности лучше, чем обмазываться билдерами
В конце концов тебе потом придется заботиться о deep copy со вложенными сущностями если ты их плодить будешь вместо списка полей в одном классе
Kanstantsin
и чем плохо cloneable
Kanstantsin
вполне норм с ним работать
Kanstantsin
если писать верно
Mike
и чем плохо cloneable
просто очень по-уродски спроектировано. Ну и у клона нельзя переписать final-поля, что делает clone бесполезным.
Ivansuper
Тем временем, очень мило
Ivansuper
https://plugins.jetbrains.com/plugin/7225-generatecopyconstructor
Ivansuper
Не спрашивайте зачем. Просто нашел
Mike
мне ещё нравятся атомарные copy-методы, типа user.withName("Jake")
Anna
мне ещё нравятся атомарные copy-методы, типа user.withName("Jake")
прикольно. мой мир уже не будет прежним))))
ffff
Добрый день. Как заставить работать canvas в webview? флаг проставил на элеменет WebView (android:hardwareAccelerated="true"), остальной джаваскрипт тоже работает, а вот на месте канваса белый экран
François Leclercq
toolbar.setAlpha(percentage); Если в тулбаре понатыканы икнонки, они также стновятся прозрачными. Есть способ этого избежать?
Павел 🍵
в мокси
Павел 🍵
онеэкзекьют стратегия
Павел 🍵
выполняет один и не запоминает ничего?
François Leclercq
Вроде работает. Спасибо
Anonymous
в папке layout можно создавать подпапки?