Как стать автором
Обновить

Комментарии 16

 "Logon{" +
                "login='" + login + '\'' +
                ", password='" + password + '\'' +
                '}';

как бы такое не красиво использовать, когда есть String.format
Есть подозрение, что это сгенерировано IDE.
Почему? Вроде такое читается легче, работает быстрее и вероятность ошибки ниже.
Вроде такое читается легче
я бы так не сказал
работает быстрее
Если только компилятор преобразует в .append (строковые операции самые медленные в java)
вероятность ошибки ниже.
ваш код:
         String dd= "Logon{" +
                "login='" + login + '\'' +
                ", password='" + password + '\'' +
                '}';
         System.out.println(dd);
вывел
Logon{login='login', password='password'}
хотя у вас есть ошибки…
грамотнее написать так
 String dd= "Logon{" +
                "login='" + login + 
                "', password='" + password +
                "'}";


ну и
String.format("Logon{login='%s', password='%s'}",login,password);
Почему этот код стал моим?
Вы понимаете что если в паттерне формата ошибетесь, или тип переменной не тот будет, то ошибку получите не на момент компиляции а на момент исполнения? При определенной удаче вы не отловите ее на момент отладки и тестирования…
хотя у вас есть ошибки…
грамотнее написать так
Какая ошибка, какая грамота? Мы все еще о программировании говорим?
Почему этот код стал моим?
каюсь не посмотрел на автора..
.Какая ошибка, какая грамота? Мы все еще о программировании говорим?
"login='" + login + '\'' +
                ", password='" + password + '\'' +

посмотрите внимательно — использование ограничителей строк — и двойные и одинарные кавычки. Отсюда и необходимость экранирования…
Вы понимаете что если в паттерне формата ошибетесь, или тип переменной не тот будет, то ошибку получите не на момент компиляции а на момент исполнения?
пользуйтесь нормальным ide и ошибка будет на момент написания кода.
%s any type String value
Так в чем ошибка-то? Кавычку не так поставили?

Idea уже ненормальная ide? Чем она мне поможет в кейсах ниже? Срочно на эклипс переходить?
Так в чем ошибка-то? Кавычку не так поставили?
ещё раз
 "Logon{" +
                "login='" + login + '\'' +
                ", password='" + password + '\'' +
                '}';

смотри внимательно.
нравится Idea — используй, но и читай что в ссылках указывают.
Сериализация через Serializable использует рефлексию, что не всегда хорошо, например под Андроид. Parcelable в статье не хватает для сравнения :)
А можете подробнее объяснить, чем рефлексия под Андроидом будет плоха?
Как минимум — рефлексия работает медленно, для андроид устройств, как известно, производительность критична.
Ну и второй момент, в случае обфускации кода, весь reflection, а значит и Serializable перестает работать.
Что касается Externalizable, он работает не через рефлексию, поэтому лишен этих недостатков, но все-таки проигрывает по производительности Parcelable.
Как минимум — рефлексия работает медленно
это было справедливо лет 10++ назад.
Ну и второй момент, в случае обфускации кода, весь reflection, а значит и Serializable перестает работать.
это надо знать, чтоб не наступить на грабли.
это было справедливо лет 10++ назад.
А что изменилось? Она стала работать быстрее?
это надо знать, чтоб не наступить на грабли.
Это выражение можно применить к любому знанию в любой профессии =))
А что изменилось? Она стала работать быстрее?
Очень даже неплохая статья кстати
Externalizable нужен, если предполагается ручной вызов методов сериализациии. А чтобы иметь возможность вручную управлять сериализацией/десериализацией достаточно создать приватные методы readObject(ObjectInputStream)/writeObject(ObjectOutputStream) в Serializable-объекте.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации