- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
static void writeInternal(byte type, Object object, ObjectOutput out) throws IOException {
out.writeByte(type);
switch (type) {
case DURATION_TYPE:
((Duration) object).writeExternal(out);
break;
case INSTANT_TYPE:
((Instant) object).writeExternal(out);
break;
...
<snip>
...
case PERIOD_TYPE:
((Period) object).writeExternal(out);
break;
default:
throw new InvalidClassException("Unknown serialized type");
}
}
JDK 8. java.time.Ser.
Вот что происходит, когда в языке есть только public-наследование. Без рефлексии короче написать нельзя.
bormand 13.10.2014 09:29 # +2
someone 13.10.2014 09:55 # 0
bormand 13.10.2014 10:47 # 0
someone 13.10.2014 10:54 # 0
bormand 13.10.2014 12:20 # 0
roman-kashitsyn 13.10.2014 12:36 # 0
3.14159265 13.10.2014 14:14 # 0
Ну сделали же для StringBuilder/StringBuffer абстрактного предка (AbstractStringBuilder), который package-private.
roman-kashitsyn 13.10.2014 12:40 # 0
Для каждого класса запилить SerializationProxy - package-private класс, содержащий сериализуемое состояние объекта, добавить package-private методы для конвертации полноценного объкта в прокси и получения полноценного объекта из прокси.
someone 13.10.2014 14:06 # 0
3.14159265 13.10.2014 14:28 # 0
Может таким образом они проверяют что тип объекта соответуствует type?!
Ну действительно похоже на какашу. Так они еще это прокси-выSer создают на каждой сериализации.