Boa noite, Mestres Javeiros 
A dúvida de hoje está relacionado ao uso da palavra-chave static
.
Compreendi que seu uso está relacionado a permanência de um valor a nível de classe e não de instância, ou seja, o valor permanecerá o mesmo (ou variará. Depende do que o louco quer fazer kakakka) sempre que instanciar o objeto.
A objeção é: qual a utilidade? O uso é parecido - pensando em front-end - com Utils?
1. Atributos (variáveis) static
:
São como “variáveis globais da classe”. Úteis quando você precisa compartilhar algum dado entre todas as instâncias.
Exemplo clássico:
public class Pessoa {
static int quantidadeDePessoas = 0;
public Pessoa() {
quantidadeDePessoas++;
}
}
Agora, cada vez que você criar uma nova Pessoa
, o contador é incrementado. Todas as instâncias compartilham esse valor.
2. Métodos static
:
Você pode chamar sem instanciar a classe. Muito usado em classes utilitárias.
public class MathUtils {
public static int somar(int a, int b) {
return a + b;
}
}
Uso:
int resultado = MathUtils.somar(3, 4);
Ou seja: sim! É exatamente a ideia das classes Utils
no front-end.
Dica prática
Se seu método não depende de nenhum atributo de instância (this
), provavelmente ele deveria ser static
.
Cuidados
-
static
não é “mágico” nem “melhor”. Ele acopla fortemente as coisas, pode atrapalhar testes unitários e não respeita bem o paradigma orientado a objetos quando usado sem critério.
-
Evite misturar muita lógica de negócio com
static
, prefira injeção de dependência e objetos bem modelados.
1 curtida