é o seguinte eu tenho dois objetos de mesma classe, o codigo abaixo
pega os dois objetos e compara seus metodos get´s e is´s me
informando em uma mensagem os seus metodos iguais podem testar se
quiserem para ver como funciona , mas, o q eu quero agora é no final
por um ultimo else como... e se for um outro objeto e não um tipo
primitivo como vou lá no outro objeto da hierarquia e buscar os seus
metodos?
public class ClasseTeste {
String nome;
long i;
int y;
boolean flag;
public boolean isFlag() {
return flag;
}
public void setFlag(boolean flag) {
this.flag = flag;
}
public long getI() {
return i;
}
public void setI(long i) {
this.i = i;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
}
e
import java.lang.reflect.*;
public class CompareObjetos
{
public static void main( String args[] )
{
ClasseTeste o1, o2;
o1 = new ClasseTeste();
o2 = new ClasseTeste();
compare(o1, o2);
}
public static int compare( Object o1, Object o2 )
{
Method[] umaListaMetodos = o1.getClass
().getDeclaredMethods();
boolean ehDiferente = false;
for( int i = 0; i < umaListaMetodos.length; i++ )
{
if( umaListaMetodos[i].getName().startsWith
("get") || umaListaMetodos[i].getName().startsWith("is") )
{
try {
Class umaClasse =
umaListaMetodos[i].getReturnType();
Object objRetornado1 =
umaListaMetodos[i].invoke(o1, null );
Object objRetornado2 =
umaListaMetodos[i].invoke(o2, null );
if( !objRetornado1.equals(
objRetornado2 ) )
return 1;
else if( umaClasse ==
int.class ){
ehDiferente = true;
System.out.println
( "Metodo: "+umaListaMetodos[i].toGenericString() );
}else if( umaClasse ==
String.class ){
ehDiferente = true;
System.out.println
( "Metodo: "+umaListaMetodos[i].toGenericString() );
}else if( umaClasse ==
long.class ){
ehDiferente = true;
System.out.println
( "Metodo: "+umaListaMetodos[i].toGenericString() );
}else if( umaClasse ==
double.class ){
ehDiferente = true;
System.out.println
( "Metodo: "+umaListaMetodos[i].toGenericString() );
}else if( umaClasse ==
short.class ){
ehDiferente = true;
System.out.println
( "Metodo: "+umaListaMetodos[i].toGenericString() );
}else if( umaClasse ==
byte.class ){
ehDiferente = true;
System.out.println
( "Metodo: "+umaListaMetodos[i].toGenericString() );
}else if( umaClasse ==
char.class ){
ehDiferente = true;
System.out.println
( "Metodo: "+umaListaMetodos[i].toGenericString() );
}else if( umaClasse ==
boolean.class ){
ehDiferente = true;
System.out.println
( "Metodo: "+umaListaMetodos[i].toGenericString() );
}else if( umaClasse ==
float.class ){
ehDiferente = true;
System.out.println
( "Metodo: "+umaListaMetodos[i].toGenericString() );
}else
compare(
objRetornado1, objRetornado2 );
}
catch( Exception e ){
e.printStackTrace(); }
}
}
return 1;
}
}
Yahoo! Groups Links
<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/jug-petropolis/
<*> To unsubscribe from this group, send an email to:
[EMAIL PROTECTED]
<*> Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/