Constantes em Java
Qual a melhor forma de definir constantes para serem utilizadas numa aplicação?
Bem, há várias abordagens possíveis: a mais comum será definir um interface
public interface Constants {
public static final double PI = 3.14159265;
public static final String HELLO = "WORLD";
}
e implementar o interface,
public class AreaCirculo implements Constants {
public static void main(String[] args) {
int raio = 2;
System.out.println("A area do circulo de raio 2 e " + PI*raio*raio);
}
}
mas esta aproximação é considerada um “anti pattern” pois distorce o uso dos
interfaces, ou seja, os interfaces providenciam serviços que os
utilizadores desejem usar (providenciam uma funcionalidade).A classe
AreaCirculo não implementa nada, apenas descarrega
(inclui) uma série de constantes na classe.
Uma segunda abordagem será criar uma classe assim:
public class Constants {
public static final double PI = 3.14159265;
public static final String HELLO = "WORLD";
}
que é em tudo idêntica ao interface com a diferença que em vez de ser um
interface, é uma class. Neste caso, o class loader vai
carregar a classe hierarquicamente até ao Object. Um desperdício de
recursos só para ter umas constantes??!!
Voltemos à primeira abordagem:
public interface Constants {
public static final double PI = 3.14159265;
public static final String HELLO = "WORLD";
}
mas agora, em vez de implementarmos o interface na classe, vamos “importá-lo”:
import static Constants.*;
public class AreaCirculo{
public static void main(String[] args) {
int raio = 2;
System.out.println("A area do circulo de raio 2 e " + PI*raio*raio);
}
}
Agora temos uma boa solução! O único senão é, se tivermos vários import static
torna-se confuso sabermos de onde vem a constante PI. A solução é fácil: em vez
de import static Constants.*;, especificamos, i.e.,
import static Constants.PI;