Bom, acho que quanto à pergunta inicial não há mais duvida. Para quem ainda não
estiver satisfeito é só fazer um teste:

Boolean b = new Boolean(true);
Integer i = new Integer(1231);

if (i.hashCode() == b.hashCode()) {
    System.out.println("Yes, hashCode não é unico!");
}

Agora, é claro que é possível gerar um hashCode() único entre objetos de uma classe X
ou Y, só depende da sua implementação. Se você quiser gerar hashcodes únicos para
instancias da classe X dentro de uma única JVM:

public class X {

    private static int nextHashCode = Integer.MIN_VALUE;

    public final int hashCode() {
        int code;
        synchronized(X.class) {
            code = nextHashCode;
            nextHashCode++;
        }
        return code;
    }

}

Note que o método hashCode deve ser declarado final para que alguem não o redefina em
uma subclasse de X e acabe com a propriedade "x1 instanceof X && x2 instanceof X &&
x1.equals(x2) => x1.hashCode() == x2.hashCode()".

Para fazer o mesmo em um ambiente distribuido já fica mais complicado... ai seria
necessário usar algum meio de comunicação entre as JVMs para negociar a distribuição
de hashCodes. Em http://www2.theserverside.com/patterns/thread.jsp?thread_id=4976 tem
uma discussão sobre como gerar identificadores únicos globais...

-- Leonardo Bueno.

----- Original Message -----
From: "Sven van ´t Veer" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Tuesday, April 17, 2001 11:42 AM
Subject: Re: [java-list] Hash Code???


> Bruno Diniz de Paula wrote:
>
> > Como o Leonardo disse, eles NAO identificam unicamente um
> > objeto. Pense por exemplo em um objeto que possua "chave
> > primaria" composta (dois int por exemplo). Fatalmente haverao
> > repeticoes no hashCode, independente da operacao (soma,
> > multiplicacao, bitwise, etc) que voce fizer com os numeros.
>
> Isso não necessariamente é assim. Houve uma discussão boa na lista
> EJB-INTEREST da sun aonde Jonathan Weedon (project leader da VisiBroker
> & Inprise Application Server) & David Wolf (Sybase Application Server)
> discutiram maneiras de implementação de hashCode do primary key class
> (pk composto) numa tal maneira que não haverá repetições. Devido à
> ferias infelizmente perdi grande parte deste discussão mas a conclusão
> era que é possivel implementar o hashcode de chaves primárias compostos
> sem repetições. Explicaram que até é necessaria pois um hashcode
> repetido em chaves primárias distintos quer dizer que o EJB container
> não poderia otomalizar o acesso aos entity beans já instatiado no container.
>
>
> ------------------------------ LISTA SOUJAVA ----------------------------
> http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP
> dúvidas mais comuns: http://www.soujava.org.br/faq.htm
> regras da lista: http://www.soujava.org.br/regras.htm
> para sair da lista: envie email para [EMAIL PROTECTED]
> -------------------------------------------------------------------------
>


------------------------------ LISTA SOUJAVA ---------------------------- 
http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP 
dúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED] 
-------------------------------------------------------------------------

Responder a