há uma 'Ação Salvar' no Eclipse que substituirá automaticamente o acesso de membros estáticos por meio de variáveis de instância com acesso estático por meio do nome da classe - habilite esta Ação Salvar e quantas outras Ações Salvar como você concordar (por exemplo, remover conversões desnecessárias, desnecessárias 'isto', etc.).
les2
Respostas:
135
Existe apenas um método, não dois, e é estático. Embora você possa chamar um método estático por meio de uma referência de instância, não é um bom estilo. Indica que o programador pensa que está chamando um método de instância. Um programador confuso pode estar pensando que pode fazer com que outro thread (não o atual) adormeça desta forma, quando não é o que acontece.
Ambas as suas linhas de código fazem a mesma coisa, mas a segunda é um estilo melhor.
+1 para mencionar que o programador pode querer fazer um determinado thread dormir por meio de someThread.sleep (), o que ele não faz.
Chii de
32
Em Java, o sono é um método estático. Ambos os seus exemplos fazem exatamente a mesma coisa, mas a versão anterior é confusa porque parece que está chamando um método em um objeto específico, mas não está fazendo nada disso. No seu exemplo, não importa muito, mas é mais perigoso se você tiver o seguinte:
someOtherThread.sleep(x);
Desta vez, parece que você está dizendo a algum outro thread para suspender, mas na verdade você está colocando o thread atual no modo de espera. A maneira de evitar esse tipo de erro é sempre chamar métodos estáticos usando a classe em vez de um objeto específico.
Você quer dizer que currentThread e someOtherThread irão dormir enquanto executam esta única linha "someOtherThread.sleep (x);" ??
Kanagavelu Sugumar
3
Não. O thread atual irá hibernar, não importa qual objeto Thread .sleep seja chamado. Você não pode colocar outros ThreadS para dormir (assim).
Torque de
3
As duas chamadas de método são idênticas em comportamento porque invocam o mesmo método, mas o uso do nome da classe ( Thread , neste caso) em vez de instância para acessar campos e métodos estáticos torna essa condição estática clara. É por isso que este aviso é produzido.
Mas, considerando que os campos e métodos estáticos são mostrados de uma maneira particular na maioria dos IDEs (por exemplo, em fonte itálica no Eclipse e no IntelliJ IDEA), este aviso ainda é necessário? Talvez não seja tão necessário quanto no início do Java que editores simples estavam em uso.
Thread.currentThread().sleep(x);ou a maneira como o Eclipse diz que o Thread.sleep(x);contexto estático é necessário se for necessário, então esperamos por um pequeno atraso com esse sono.
O paradigma estático definido por um objeto afeta apenas o ciclo de vida de impressão do heap de objeto específico, novamente considerando que o ciclo de vida do objeto geral estático não é tão incômodo, se necessário, pode ser usado para facilitar a codificação, mas deve ser feito com cuidado como print é referido por Class(por exemplo: - Class.forName(pkg.className)) como por nome e não por qualquer um objectque seja uma cópia de impressão única em tempo de execução da Classe na HEAPmemória.
Novamente, o uso de objeto também tem prós e contras pelos tipos de referências Fraca, Fantasma e Forte ....,
O código é complicado por natureza. É apenas a maneira como fazemos para que funcione e funcione.
Para falar sobre thread, - ele surge de forma assíncrona, embora possamos ter coisas síncronas em threading. Por natureza, as coisas, todas as coisas são assíncronas, embora encontremos coisas que às vezes são síncronas. Nenhuma das coisas é síncrona, mesmo quando invadimos a Quantum ou a Astronomia.
Respostas:
Existe apenas um método, não dois, e é estático. Embora você possa chamar um método estático por meio de uma referência de instância, não é um bom estilo. Indica que o programador pensa que está chamando um método de instância. Um programador confuso pode estar pensando que pode fazer com que outro thread (não o atual) adormeça desta forma, quando não é o que acontece.
Ambas as suas linhas de código fazem a mesma coisa, mas a segunda é um estilo melhor.
fonte
Em Java, o sono é um método estático. Ambos os seus exemplos fazem exatamente a mesma coisa, mas a versão anterior é confusa porque parece que está chamando um método em um objeto específico, mas não está fazendo nada disso. No seu exemplo, não importa muito, mas é mais perigoso se você tiver o seguinte:
Desta vez, parece que você está dizendo a algum outro thread para suspender, mas na verdade você está colocando o thread atual no modo de espera. A maneira de evitar esse tipo de erro é sempre chamar métodos estáticos usando a classe em vez de um objeto específico.
fonte
As duas chamadas de método são idênticas em comportamento porque invocam o mesmo método, mas o uso do nome da classe ( Thread , neste caso) em vez de instância para acessar campos e métodos estáticos torna essa condição estática clara. É por isso que este aviso é produzido.
Mas, considerando que os campos e métodos estáticos são mostrados de uma maneira particular na maioria dos IDEs (por exemplo, em fonte itálica no Eclipse e no IntelliJ IDEA), este aviso ainda é necessário? Talvez não seja tão necessário quanto no início do Java que editores simples estavam em uso.
fonte
Thread.currentThread().sleep(x);
ou a maneira como o Eclipse diz que oThread.sleep(x);
contexto estático é necessário se for necessário, então esperamos por um pequeno atraso com esse sono.O paradigma estático definido por um objeto afeta apenas o ciclo de vida de impressão do heap de objeto específico, novamente considerando que o ciclo de vida do objeto geral estático não é tão incômodo, se necessário, pode ser usado para facilitar a codificação, mas deve ser feito com cuidado como print é referido por
Class
(por exemplo: -Class.forName(pkg.className)
) como por nome e não por qualquer umobject
que seja uma cópia de impressão única em tempo de execução da Classe naHEAP
memória.Novamente, o uso de objeto também tem prós e contras pelos tipos de referências Fraca, Fantasma e Forte ....,
O código é complicado por natureza. É apenas a maneira como fazemos para que funcione e funcione.
fonte