- 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-наследование. Без рефлексии короче написать нельзя.
Ну сделали же для StringBuilder/StringBuffer абстрактного предка (AbstractStringBuilder), который package-private.
Для каждого класса запилить SerializationProxy - package-private класс, содержащий сериализуемое состояние объекта, добавить package-private методы для конвертации полноценного объкта в прокси и получения полноценного объекта из прокси.
Может таким образом они проверяют что тип объекта соответуствует type?!
Ну действительно похоже на какашу. Так они еще это прокси-выSer создают на каждой сериализации.