getInstance() não vai retornar uma única instância, olha só:
 
        public class Numeros{
 
             /*
                Isso aqui vai causar um StackOverflowError
                assim que você chamar getInstance()
            */
                private Numeros numeros = new Numeros();
 
            /*
                Construtor privado, está certo, já que a intenção
                é criar uma classe Singleton
            */
                private Numeros() {}
 
            /*
                Esse método não está acessível às classes externas,
                assim para você poder acessá-lo precisa criar uma instância antes,
                o que não será possível pois o construtor é privado...
            */
               public Numeros getInstance() {
                                return this.numeros;
                }
                public double arredondaValor(double valor) {
                                //...
                }
                //e aqui tem outros métodos.
        }
 
Abaixo segue a maneira certa de você tornar sua classe Singleton:
 
        public class Numeros {
 
                private static Numeros numeros;
 
                private Numeros() {}
 
                public static synchronized Numeros getInstance() {
                        if  (numeros == null) {
                                numeros = new Numeros();
                        }
                        return numeros;
                }
 
                public double arredondaValor(double valor) {
                        //...
                }
                // e aqui tem outros métodos.
        }
 
 
 
----- Original Message -----
Sent: Wednesday, January 15, 2003 11:07 PM
Subject: [java-list] Métodos static

Tenho várias classes que vão ser usadas no sistema em que trabalho e como elas são genéricas fizemos da seguinte forma:
 
public class Numeros{
    private Numeros numeros = new Numeros();
 
    private Numeros(){}
 
    public Numeros getInstance(){
        return this.numeros;
    }
 
    public double arredondaValor(double valor){
        //...
    }
   
    //e aqui tem outros métodos.
 
}
 
Dessa maneira o método getInstance sempre me retorna uma unica instância dessa classe, da qual eu só preciso usar os métodos. Eu poderia criar os métodos todos sendo static mas preferi dessa forma o que parece ser a mesma coisa.
Agora tenho uma duvida:
 
Quando chamo esses métodos em várias outras classes ao mesmo tempo, a VM coloca isso em uma fila ou atende (todas as chamadas a um método) aos poucos?
 
Quem puder me responder agradeço.
 
 
Marcos Tadeu P. Vargens
[EMAIL PROTECTED]


Esta mensagem foi verificada pelo E-mail Protegido Terra.
Scan engine: VirusScan / Atualizado em 15/01/2003 / Versão: 1.3.13
Proteja o seu e-mail Terra: http://www.emailprotegido.terra.com.br/

Responder a