1. Método de declaraçãostatic
oferece um pequeno benefício de desempenho, mas o que é mais útil, permite usá-lo sem ter uma instância de objeto em mãos (pense, por exemplo, no método de fábrica ou na obtenção de um singleton). Também serve ao propósito documental de contar a natureza do método. Este propósito documental não deve ser ignorado, pois dá dicas imediatas sobre a natureza do método para os leitores do código e usuários da API e também serve como uma ferramenta de pensamento para o programador original - ser explícito sobre o significado pretendido ajuda você também pensa com clareza e produz código de melhor qualidade (acho que com base na minha experiência pessoal, mas as pessoas são diferentes). Por exemplo, é lógico e, portanto, desejável distinguir entre métodos que operam em um tipo e métodos que agem em uma instância do tipo (como apontado porJon Skeet em seu comentário a uma questão C # ).
Ainda outro caso de uso para static
métodos é imitar a interface de programação procedural. Pense na java.lang.System.println()
classe e nos métodos e atributos nela contidos. A classe java.lang.System
é usada como um espaço de nomes de agrupamento, em vez de um objeto instanciável.
2. Como pode o Eclipse (ou qualquer outro tipo de entidade programada ou outro tipo de - biocomponível ou não biocomponível -) saber com certeza qual método pode ser declarado como estático? Mesmo se uma classe base não estiver acessando variáveis de instância ou chamando métodos não estáticos, pelo mecanismo de herança as coisas podem mudar. Somente se o método não pode ser substituído pela subclasse herdada, podemos afirmar com 100% de certeza que o método realmente pode ser declarado static
. Substituir um método é impossível exatamente nos dois casos de ser
private
(nenhuma subclasse pode usá-lo diretamente e nem mesmo em princípio sabe sobre ele), ou
final
(mesmo se acessível pela subclasse, não há como alterar o método para se referir a dados de instância ou funções).
Daí a lógica da opção Eclipse.
3. O autor da postagem original também pergunta: “ Apontar um método como estático, suponho que esteja mostrando que você não usa nenhuma variável de instância, portanto, poderia ser movido para uma classe de estilo utils? ” Este é um ponto muito bom. Às vezes, esse tipo de alteração de design é indicado pelo aviso.
É uma opção muito útil, que eu pessoalmente me certificaria de habilitar, se eu usasse o Eclipse e fosse programar em Java.