Я понимаю, что Enum является Serializable. Следовательно, это безопасно. (selectedCountry enum Country)
Исходное перечисление без переменных участника-пользователя
public enum Country {
    Australia,
    Austria,
    UnitedState;
}
Фрагмент
@Override
public void onActivityCreated (Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    if (savedInstanceState != null) {
        selectedCountry = (Country)savedInstanceState.getSerializable(SELECTED_COUNTRY_KEY);
    }
}
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
    savedInstanceState.putSerializable(SELECTED_COUNTRY_KEY, selectedCountry);
}
Однако, что, если у меня есть несериализуемые члены в пользовательском классе enum? Например,
Исходные переменные участника-члена enum
package org.yccheok;
import org.yccheok.R;
/**
 *
 * @author yccheok
 */
public enum Country {
    Australia(R.drawable.flag_au),
    Austria(R.drawable.flag_at),
    UnitedState(R.drawable.flag_us);
    Country(int icon) {
        this.icon = icon;
        nonSerializableClass = new NonSerializableClass(this.toString());
    }
    public int getIcon() {
        return icon;
    }
    public static class NonSerializableClass {
        public NonSerializableClass(String dummy) { this.dummy = dummy; }
        public String dummy;
    }
    private final int icon;
    public NonSerializableClass nonSerializableClass;
}
Я тестировал. Оно работает. (Я тестировал, распечатывая все значения переменных-членов до и после сериализации. Они такие же до и после)
  Однако я не понимаю, почему это работает? Поскольку я не предоставляю надлежащие readObject и writeObject, как требуется интерфейсом Serializable.
Как указано в "Эффективной Java". Пункт 75: подумайте о том, как использовать пользовательскую сериализованную форму, мне нужно предоставить свои собственные readObject и writeObject, если у меня есть переменные-члены в моем перечислении?