Estava precisando criar uma classe APENAS com 6 propriedades constantes.
Tentei criar os atributos como static final, mas na hora de instanciar a classe numa JSP fica aparecendo uns alertas DIZENDO que uma variável estática só pode ser usada “in a static way”
É possível criar esse atributos constantes em uma classe e usar em um projeto web?
O que significa na verdade o termo “final” e “static”?
final significa que a variável é uma constante… não poderá receber outro valor e deverá ser iniciada com algum valor
public static final String nome = "João";
nome="Marcos";//erro aqui static significa que só uma alocação de memória será criada para esta variável… não terão 2 cópias em simultâneo…
digamos que você tenha uma classe Pessoa:
public class Pessoa {
private String nome;
private String sexo;
...//getters e setters
}
e digamos que você queira instanciar 2 Pessoas e mostrar na tela
Pessoa 1: João - Masculino
Pessoa 2: Maria - Feminino
e se agora você colocasse os 2 atributos da classe Pessoa como static e rodasse o mesmo exemplo você veria o seguinte resultado na console:
Pessoa 1: Maria - Feminino
Pessoa 2: Maria - Feminino
ou seja… a mesma variável foi utilizada e como a primeira pessoa setada foi o João a segunda pessoa (Maria) sobrescreveu os atributos da primeira… tendo assim somente 1 cópia da variável na memória…
eriko obrigado pelas explanações… mas agora surgiu uma zebra…
acabei de ler um ARTIGO onde o autor citava que o termo STATIC era a respeito apenas a variável OU método ser GLOBAL ou LOCAL.
Com segurança o autor afirmava, STATIC >> GLOBAL e SEM O STATIC LOCAL… o estranho é que em nenhum momento ele mencionou esse fato do valor ser sobrescrito.
o que define se a variável é global ou local é o public e o private (considerando Global como possível de ser acessada de outra classe e Local como só sendo possível acessar da mesma classe da criação da variável)
você pode dar uma olhada aqui também: http://www.guj.com.br/article.show.logic?id=121