code: private void readObject(ObjectInputStream stream)
          throws IOException, ClassNotFoundException {
          stream.defaultReadObject();
          int capitalizationSettingValue = (serialVersionOnStream > 1)? stream.readInt(): -1;
          ///CLOVER:OFF
          // don't have old serial data to test with
          if (serialVersionOnStream < 1) {
              // didn't have defaultCenturyStart field
              defaultCenturyBase = System.currentTimeMillis();
          }
          ///CLOVER:ON
          else {
              // fill in dependent transient field
              parseAmbiguousDatesAsAfter(defaultCenturyStart);
          }
          serialVersionOnStream = currentSerialVersion;
          locale = getLocale(ULocale.VALID_LOCALE);
          if (locale == null) {
              // ICU4J 3.6 or older versions did not have UFormat locales
              // in the serialized data. This is just for preventing the
              // worst case scenario...
              locale = ULocale.getDefault(Category.FORMAT);
          }
  
          initLocalZeroPaddingNumberFormat();
  
          setContext(DisplayContext.CAPITALIZATION_NONE);
          if (capitalizationSettingValue >= 0) {
              for (DisplayContext context: DisplayContext.values()) {
                  if (context.value() == capitalizationSettingValue) {
                      setContext(context);
                      break;
                  }
              }
          }
  
          // if serialized pre-56 update & turned off partial match switch to new enum value
          if(getBooleanAttribute(DateFormat.BooleanAttribute.PARSE_PARTIAL_MATCH) == false) {
              setBooleanAttribute(DateFormat.BooleanAttribute.PARSE_PARTIAL_LITERAL_MATCH, false);
          }
  
          parsePattern();
      }
docs: Override readObject.
  See http://docs.oracle.com/javase/6/docs/api/java/io/ObjectInputStream.html