Я думаю, що і Java, і .Net люди помилилися цього разу, було б краще зробити все серіалізаційним за замовчуванням і потрібно лише позначити ті класи, які не можна безпечно серіалізувати замість цього.
Наприклад, у Smalltalk (мовою, створеній у 70-х роках), кожен об'єкт за замовчуванням є серіалізаційним. Я не маю поняття, чому це не так у Java, враховуючи той факт, що переважна більшість об'єктів безпечна для серіалізації і лише деякі з них - ні.
Позначення об'єкта як серіалізабельний (з інтерфейсом) не робить магічний серіалізабельний об'єкт, він був серіалізаційним протягом усього часу , це просто те, що ви зараз висловили щось, що система могла б знайти самостійно, тому я не бачу справжньої вагомої причини для серіалізація - така, яка є зараз.
Я думаю, що це було або погане рішення дизайнерів, або серіалізація була задумливою, або платформа ніколи не була готова зробити серіалізацію за замовчуванням для всіх об'єктів безпечно та послідовно.