O propósito intrigante das constantes de interface
Em Java, é possível declarar campos dentro de uma interface, tornando-os implicitamente públicos, estáticos e final. Isso levantou questões entre os desenvolvedores.
A Armadilha da Interface Constante
Contrariamente às expectativas, definir constantes dentro de uma interface é considerado um "Antipadrão de Interface Constante". Conforme declarado em Effective Java por Joshua Bloch, esta prática expõe desnecessariamente detalhes de implementação aos usuários e dificulta futuras modificações de código. Além disso, ele vincula subclasses à interface constante.
Anomalias da plataforma
Apesar deste aviso, diversas interfaces constantes podem ser encontradas na Biblioteca Padrão Java, como java. io.ObjectStreamConstants. Essas estranhezas não devem servir como exemplos, mas sim como contrastes a serem evitados.
Abordagens Alternativas
Para evitar armadilhas associadas a interfaces constantes, considere usar uma classe de utilitário dedicada com construtores privados e campos finais estáticos.
public final class Constants {
private Constants() {}
public static final double PI = 3.14159;
public static final double PLANCK_CONSTANT = 6.62606896e-34;
}
Essa abordagem mantém as constantes privadas, mas prontamente acessíveis por meio de importações estáticas.
import static Constants.PLANCK_CONSTANT;
import static Constants.PI;
public class Calculations {
public double getReducedPlanckConstant() {
return PLANCK_CONSTANT / (2 * PI);
}
}
Assim, embora as constantes de interface possam parecer intrigantes, elas devem ser evitadas devido a possíveis falhas de design. Use aulas privadas com finais estáticos para manter uma base de código limpa e flexível.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3