The JLS does not provide binary compatibility for compiler-generated fields (such as reference to an outer class object from an inner class object). This means that there is no reliable way to use such classes in serialization even if all involved classes implement java.io.Serializable. A mere recompilation of unchanged sources might result in different compiler-generated names.
Would it make sense to enhance -Xlint:serial to warn about classes which implement java.io.Serializable and contain compiler-generated fields? PS: This is quite different from the frequently observed issue where a non-static inner class cannot be serialized because the outer class is not serializable. Serialization works fine, but deserialization silently results in invalid objects. -- Florian Weimer <[email protected]> BFK edv-consulting GmbH http://www.bfk.de/ Kriegsstraße 100 tel: +49-721-96201-1 D-76133 Karlsruhe fax: +49-721-96201-99
