Classe object

8 respostas
edymrex

Sempre me falaram que a classe object é a mais importante do java pois todas herdam dela revolvi pesquisa e achei ele um pouco estranha,
olhem o ódigo dela:

public class Object 
{

    private static native void registerNatives();
    static 
    {
        registerNatives();
    }
 
    public final native Class<?> getClass();

  
 
    public native int hashCode();

 
    public boolean equals(Object obj) 
    {
	    return (this == obj);
    }
 
    protected native Object clone() throws CloneNotSupportedException;

  
   
    public String toString() {
	return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }
 
  
    public final native void notify();

 
   
    public final native void notifyAll();

 
    public final native void wait(long timeout) throws InterruptedException;
 
    public final void wait(long timeout, int nanos) throws InterruptedException {
        if (timeout < 0) {
            throw new IllegalArgumentException("timeout value is negative");
        }

        if (nanos < 0 || nanos > 999999) {
            throw new IllegalArgumentException(
				"nanosecond timeout value out of range");
        }

	if (nanos >= 500000 || (nanos != 0 && timeout == 0)) {
	    timeout++;
	}

	wait(timeout);
    }

 
    public final void wait() throws InterruptedException {
	wait(0);
    }

 
   
    protected void finalize() throws Throwable { }
}

esse método equals

public boolean equals(Object obj) 
    {
	    return (this == obj);
    }

Não entendi está instrução this==obj?? está instrução verifica se a classe Object que está referencianda com this e igual ao objeto que está passando como parâmetro é isto???

8 Respostas

gp7junior

verifica se o conteudo de um é igual ao conteudo do outro.

peczenyj

o == verifica se os 2 objetos ‘apontam’ para a mesma instancia.

edymrex

Não consegui enxergar isto cara

public boolean equals(Object obj) 
     {
 	    return (this == obj);
     }

pra min ele verifica a classe Object já que no método usa-se a referência this com o objeto passado como parâmetro pra min isto ai é se a classe object é igual ao objeto passado me corrige se eu estiver errado… acho que este this que está me confundindo.

luistiagos
this se refere a propria classe quando ultilizase this e o mesmo

que referenciar a propria classe neste caso ele verifica se a propria classe Object é igual a outra instancia da classe Object passada por parametro este principio ultiliza herança digamos que vc tera uma classe Coisa esta classe obviamente herda de Object como todas

então: um Coisa é um Object e quando fizar um coisa.equals(coisa2)

(considerando que coisa e coisa2 são instancia da classe coisa)

então ele verifica se coisa = coisa2

espero ter ajudado
edymrex

Cara entendi mais ou mesmo tinha esquecido que todas herdam de Object
so não compreendi a parada da instância, esse método getClass o que ele faz ele tb é muito estranho.

ViniGodoy

O que deve soar estranho é o fato da mairia dos métodos serem “native”, ou seja, tem implementação dependente de plataforma.

O que é natural, afinal cada VM nada mais é do que uma biblioteca de funções dependente de plataforma.

denisspitfire

Pessoal, mas porque criar um array de Object por exemplo??? Com que finalidade eu preciso abstrair os meus tipos de objetos? Estou estudando o livro Use a cabeça Java. E me atrapalhei aqui em polimorfismo… Seguinte…

ArrayList<Object> myDogArrayList = new ArrayList<Object>();
Dog aDog = new Dog();
myDogArrayList.add(aDog);
//até aqui funciona.
Dog d = myDogArrayList.get(0);
// porque isso nao funciona? Ja que...myDogArrayList.get(0); é um Dog???
jacobis

É porque meu querido esta classe serve para criar vários arrays ao mesmo tempo de diversos tipos. É como se você estivesse usando em um mesmo array uma outra lista de arrays integrados… por exemplo, você sabe que o básico de java não permite criar array com vários objetos de diversos tipos, apenas de um tipo só. Mas com a ArrayLista você pode criar uma lista de arrays com diversos tipos como se todos fossem um só array.

ArrayList<String> array = new ArrayList<String>();
agora podemos colocar :
array.add(0,"Jaco Programador"); 
ArrayList<Integer> array2 = new ArrayList<Integer>();

Pronto depois disto blz… Agora se queremos algo mais podemos colocar uma quantidade predefinida de elementos como por exemplo se quisermoa apenas um array de 10 elementos
do tipo estático… colocamos assim:

ArrayList<String> array = new ArrayList<String>(10); <----- quantidade de elementos que o array pode suportar.

Criado 6 de junho de 2007
Ultima resposta 26 de jun. de 2012
Respostas 8
Participantes 7