Declarar uma constante

Boa noite amigos,

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 p1 = new Pessoa();
p1.setNome("João");
p1.setSexo("Masculino");
Pessoa p2 = new Pessoa();
p2.setNome("Maria");
p2.setSexo("Feminino");
System.out.println("Pessoa 1: "+p1.getNome()+" - "+p1.getSexo());
System.out.println("Pessoa 2: "+p2.getNome()+" - "+p2.getSexo());

o resultado seria:

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…

3 curtidas

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.

E agora???

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