Статус-кво ante:
public class A {
public enum C { ONE, TWO, THREE }
}
А теперь давайте представим, что нам действительно, очень не нравится имя «А». Итак, мы хотим переименовать его в «B». Проблема в том, что это библиотека, и мы хотим оставаться обратно совместимой. Что ж, это должно быть возможно, верно?
public class B {
public enum C {ONE, TWO, THREE }
}
и в другом файле:
@Deprecated
public class A extends B {
}
Теперь проблема в том, что старый код получит жалобу на A $ C не существует.
Это кажется неразрешимым, если я не оставлю перечисление в классе A и не добавлю B для расширения A, что на самом деле не поможет нам избавиться от A.