Import static?

15 respostas
lina

Oi,

Realmente estou tomando conhecimento dessa importação statica agora… não sei se é falta de meu conhecimento ou se sempre existiu…

então, usar? não usar? quais os problemas que poderei encontar?
se existir um método em minha classe com o mesmo nome, irá dar problema?

Eu sei a sua funcionalidade, porém como é uma coisa nova no meu mundo java… hehe… vai saber né!

Tchauzin!

15 Respostas

LPJava

o “problema” do static é que qualquer membro static pertence a classe e nao há uma instancia. Mas isso nao pode ser considerado “problema” porque depende da situação e do projeto…

flw!

amanda.cassab

Eu, pessoalmente, não gosto de utilizar.

Leia mais em: http://java.sun.com/j2se/1.5.0/docs/guide/language/static-import.html

Zakim

Eu ainda não procurei saber se vale a pena ou não, por questão de performance ou algum outro requisito.

Mas de certa forma, não da pra negar que ele da uma força a legibilidade do código. Além de diminuir consideravelmente o comprimento da linha e a repetição constante da Classe que armazena o “componente” estático

amanda.cassab

Não acho que fique legível.

Fonte: http://java.sun.com/j2se/1.5.0/docs/guide/language/static-import.html

herbertins

alguem poderia me explicar como funciona esse import static. Eu li no livro da kathy e não intendi muito bem rss

falows

ViniGodoy

Esse import static foi criado, basicamente, para evitar o Constant Interface Antipattern.

O import static geralmente é uma boa quando você está interagindo com classes que só contém métodos estaticos, tal como a java.lang.Math.

Não existe nenhum ganho ao escrever Math. o tempo todo. O código fica mais limpo e mais claro se essa escrita for simplesmente eliminada, através do import static. Especialmente se você chama esses métodos o tempo todo.

Na verdade, pelo conceito de OO, a classe Math do Java nem sequer deveria existir. Ela é um xunxo, para conseguir simular a programação estruturada no Java. E com o import static, é isso mesmo que acontece. Pense bem: Qual seria diferença de criar uma classe só com métodos estáticos e que não permite herança, ou de criar funções sem classe, dentro de um pacote java Math, como seria na programação estruturada? Nenhuma.

Veja como o import static pode aumentar a clareza nesse caso:

//Sem import static public double distancia(double x1, double y1, double double x2, double y2) { return Math.sqrt(Math.pow(Math.abs(x1 - x2), 2) + Math.pow(Math.abs(y1 - y2), 2)); }

//Com import static public double distancia(double x1, double y1, double double x2, double y2) { return sqrt(pow(abs(x1 - x2), 2) + pow(abs(y1 - y2), 2)); }

(Esse exemplo é só ilustrativo. Na prática não haveria a necessidade de usar abs no cálculo da distância, já que os termos são sempre elevados ao quadrado e, após isso, o resultado é sempre positivo. Usa-se abs apenas quando se quer descobrir o tamanho do segmento de reta em x ou y, isoladamente.)

Não é legal usar o import static em métodos fábrica, ou métodos que cujo significado não pode ser definido sem que você leia o nome da classe que os contém. Por exemplo, o método getByName da classe InetAddress. Fazer um import static desse método só vai deixar o seu código confuso. Imagine o seguinte trecho:

x = getByName(name); //Com import static

Fica melhor assim:

x = InetAddress.getByName(name); //sem import static

Pode ser bacana usar import static em classes que usem muito uma inner class estática pública. A regra básica é a seguinte: Use-o somente se a clareza do código aumentar. E avalie com atenção, pois isso nem sempre acontece.

lina

Oi,

Por exemplo, você tem 2 classes em pacotes diferentes chamadas: Caminhao (pacote pesado) e Carro (Pacote leve).
na classe carro você precisa acessar um método statico, chamado Roda da classe caminhao.

Sem a utilização do import static você faria:

import		pesado.Caminhao;		

Caminhao.Roda();

e com a utilização do import static você faz:

import static	Caminhao.*;

Roda(); // Sem a referencia Caminhao na frente.

SOu ruim de exemplos.. porem é mais ou menos assim +)

Tchauzin!

LPJava

outro uso de static é quando vc deseja ter valores compartilhados… entao vc tem uma class la Dollar e quer importar o dolar paralelo entao o static é a melhor opcao ja que o valor do dolar nao pode variar para cada instancia deve ser compartilhado… essa é outra essencia… alem da Math.

ViniGodoy

LPJava, ela está falando do import static não do modificador static.

victorwss

import static é apenas um sintatic sugar. Pode deixar o seu programa com um sabor melhor e mais doce ou pode causar diabetes e overdose. Tem que saber onde usar.

LPJava

sem palavras agora o victor disse tudo!

herbertins

Oiii acho que intendi o tal do import static na verdade esse import static eu ainda nao li no livro não eu confundii

o que eu queria dizer é como funciona isso ???

class carro{

static{


}
}

para que serve isso como funciona???

valew galera to aprendendo com vcs aqui jajaa vou ta fera pra fazer minha prova hehe

victorwss
herbertins:
Oiii acho que intendi o tal do import static na verdade esse import static eu ainda nao li no livro não eu confundii

o que eu queria dizer é como funciona isso ???

class carro{

static{


}
}

para que serve isso como funciona???

valew galera to aprendendo com vcs aqui jajaa vou ta fera pra fazer minha prova hehe

Isso é um bloco de inicialização da classe.

bombbr

Eu uso, porém é bom não abusar, senão seu código acaba ficando pouco legivel…

public enum MeuEnumeradoComNomeMuitoGrandeEComplexo {
            INICIADO,
            FINALIZADO
}

Neste caso eu uso, deixando o código mais legível

import static MeuEnumeradoComNomeMuitoGrandeEComplexo.*;

public class Exemplo {
   
  public void proc(){
     
     if(INICIADO.equals(xpto)) {
          ............    

     }
 }



}
LPJava

eu uso bloco static quando quero carregar algo junto com class. Por exemplo vc precisa carregar um arquivo quando a class X for carrega entao vc chama o arquivo dentro do bloco static…

Criado 25 de abril de 2008
Ultima resposta 28 de abr. de 2008
Respostas 15
Participantes 8