Como parte de um esforço de refatoração ou apenas um desenvolvimento contínuo, um método específico ou talvez uma classe inteira pode se tornar obsoleta em algum sentido. Java suporta a @Deprecatedanotação para indicar que provavelmente existe uma maneira melhor de lidar com a funcionalidade em questão. Eu imagino que isso seja particularmente útil em APIs públicas, onde os efeitos da remoção de partes de uma API podem não ser conhecidos. Para uma API não pública e um projeto que usa sistemas de controle de revisão (para que a exclusão possa ser desfeita em algum sentido), quando é apropriado reprovar em vez de excluir o (s) elemento (s) obsoleto (s)?