- 1
- 2
- 3
- 4
- 5
- 6
- 7
private static class Errors extends ArrayList<String> {
private static final long serialVersionUID = 1L;
}
private static class Notices extends ArrayList<String> {
private static final long serialVersionUID = 1L;
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+73
private static class Errors extends ArrayList<String> {
private static final long serialVersionUID = 1L;
}
private static class Notices extends ArrayList<String> {
private static final long serialVersionUID = 1L;
}
две большие разницы
wvxvw 11.04.2014 14:48 # 0
ПС. Я обычно пишу Foo.class.getHashCode() вместо.
roman-kashitsyn 11.04.2014 14:51 # 0
Да не то чтобы прям бесполезный. Вообще говоря, это версия, определяющая обратную совместимость.
> Foo.class.getHashCode()
hashCode() же
bormand 11.04.2014 15:23 # 0
> Я обычно пишу Foo.class.getHashCode() вместо.
This integer need not remain consistent from one execution of an application to another execution of the same application не смущает?
http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html#hashCode%28%29
roman-kashitsyn 11.04.2014 15:30 # +2
wvxvw 11.04.2014 16:29 # 0
Т.е. эти свойства только нужны (на сколько я понимаю) для Data{Output/Input}Stream. Которыми все равно никто не пользуется / область их применения сильно ограничена.
roman-kashitsyn 11.04.2014 16:48 # 0
wvxvw 11.04.2014 16:58 # 0
roman-kashitsyn 11.04.2014 17:05 # +1
Если же считаем, что новое поле ни в коем случае не может быть нулл/нуль - обновляем версию, чтобы попытка чтения невалидных более старых данных сразу кидала исключение (fail fast).
> Если бы он сам мог вычислить версию
А он сам и вычисляет, рассчитывая хеши имён всех базовых классов и их полей и типов полей и хрен знает чего ещё. Скорее всего, магическое число, которое рисует эклипс по умолчанию - это и есть тот самый хеш.
Идеи в целом разумные, но жабье исполнение как всегда "на высоте" - магические интерфейсы без методов, магические статические константы, магические приватные методы для кастомной сериализации - вся подсистема сериализации один сплошной 3.14здец.
wvxvw 11.04.2014 17:24 # 0
Такой подход к версиям не позволяет отследить кто был раньше, а кто позже. Более того, в большом проекте практически не возможно гарантировать уникальность этих чисел. Изза того, что он совсем не автоматический, и не гарантируется средой выполнения / компилятором, в нем будет больше ошибок, чем полезных данных.