Boa tarde.
Como se faz para desenvolver uma classe que não pretendo instanciar, simplesmente chamar seus métodos quando e onde bem desejar?
Algum exemplo simples por favor.
Desde já agradeço.
Boa tarde.
Como se faz para desenvolver uma classe que não pretendo instanciar, simplesmente chamar seus métodos quando e onde bem desejar?
Algum exemplo simples por favor.
Desde já agradeço.
Você precisa de métodos estáticos, que são métodos de classe e não de instância.
Ex:
public class Calculadora {
public static int soma(int a, int b) {
return a + b;
}
}
Agora como utilizar esta classe:
public class Teste {
public static void main(String[] args) {
System.out.println("2 + 2 = " + Calculadora.soma(2, 2));
}
}
Preste atenção no modificador static na declaração do método soma da classe Calculadora.
/**
* Formata o valor informado como moeda, no formato ###,###,##0.00.
*
* @param valor
* O valor à ser formatado.
* @return Uma String formatada com a máscara ###,###,##0.00.
*/
public class Moeda {
public static String formata(double valor) {
DecimalFormatSymbols simbolosDecimais = new DecimalFormatSymbols();
simbolosDecimais.setDecimalSeparator(',');
simbolosDecimais.setGroupingSeparator('.');
DecimalFormat df = new DecimalFormat("###,###,##0.00", simbolosDecimais);
return df.format(valor);
}
}
Moeda.formata(valor);
Blz? Qq dúvida posta aew! Flw! :thumbup:
Crie uma classe com um contrutor padrão privado e somente com métodos estáticos.
ex.:class Util {
private Util(){}
public static boolean validateBlaBlaBla(){
//...
}
}
Ok... você pode criar uma classe só com métodos estáticos, embora eu realmente não recomende isso:
public final void UmaClasse {
private UmaClasse() { } //Proibimos o uso do construtor.
public static metodo1() {
//faz algo
}
public static metodo2() {
//faz algo
}
public static metodo3() {
//faz algo
}
}
//O uso seria
UmaClasse.metodo1();
UmaClasse.metodo2();
Outra maneira, que também não legal, é criando um Singleton.
public class UmSingleton {
private static UmSingleton instance = new UmSingleton();
private static UmSingleton getInstance() { return instance; }
private UmSingleton() {};
public metodo1() {
//faz algo
}
public metodo2() {
//faz algo
}
}
//Uso
UmSingleton.getInstance().metodo1();
UmSingleton.getInstance().metodo2();
O que se recomenda? Você criar objetos da classe. Se precisar controlar o a criação desses objetos, use o padrão Factory Method, Registry ou um framework de Dependency Injection.
Cria uma classe com métodos estatísticos ex:
public class Teste {
public static void main(String[] args) {
SuaClasse.fazAlgumaCoisa();
}
}
public class Teste {
public static void main(String[] args) {
SuaClasse.fazAlgumaCoisa();
}
}
Ok… você pode criar uma classe só com métodos estáticos, embora eu realmente não recomende isso:
Mesmo se essa classe for utilitaria como a StringUtils do jakarta commons ?
Caraca!
Nunca fui tão bem tratado aqui!
Estou muito contente.
Muito obrigado MERMO!
É bom pensar bem antes de decidir se uma classe é uma Utility class ou não.
Utility classes não são extensíveis e, na verdade, não são nada orientadas a objetos.
Agora na prática, eu mesmo já fiz classes assim. E a própria Sun também, como a classe Math.
Só fica a ressalva para não abusar. Para lembrar que classes assim não são extensíveis e não se beneficiam de polimorfismo.
Mais uma vez muito obrigado!