Metoda equals (porovnání odkazů na objekt) – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Metoda equals (porovnání odkazů na objekt) – Java – Fórum – Programujte.comMetoda equals (porovnání odkazů na objekt) – Java – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Začátečník11
~ Anonymní uživatel
2 příspěvky
3. 11. 2012   #1
-
0
-

Zdravím, jsem s Javou teprve v začátcích a prosím o radu. Chci metodou equals porovnat dva objekty, které jsou však "poskládány" z ještě dalších objektů. Jeden objekt se dědí, ale na druhý je pouze odkázáno referenční proměnnou.

public abstract class ObjectsMethod {


public static abstract class Person {

  protected String name;

  protected String surName;

  protected String title;

  public Person(String name, String surName, String title) {
   super();
   this.name = name;
   this.surName = surName;
   this.title = title;
  }
 
  @Override
     public boolean equals(Object obj) {
   if (obj == this) return true;
         if (obj instanceof Person) {
             Person p = (Person) obj;
             return (this.name == p.name && this.surName == p.surName);
         }
         return false;
     }
 
  public int hashCode(){
   return (name == null ? 11 : name.hashCode()) ^ (surName == null ? 17 : name.hashCode());

  }


}


public static abstract class Address {

  protected String city;

  protected String street;

  protected int number;

  public Address(String city, String street, int number) {
   super();
   this.city = city;
   this.street = street;
   this.number = number;
  }
 
  @Override
     public boolean equals(Object obj) {
   if (obj == this) return true;
         if (obj instanceof Address) {
          Address a = (Address) obj;
             return (this.city == a.city && this.street == a.street && this.number == a.number);
         }
         return false;
     }
 
  public int hashCode(){
   return (city == null ? 11 : city.hashCode()) ^ (street == null ? 17 : city.hashCode()) ^ (number*31);

  }

}


public static abstract class PersonAddress extends Address {

  protected Person person;

  public PersonAddress(Person person, Address address) {
   super(address.city, address.street, address.number);
   this.person = person;
  }
 
  @Override
  public boolean equals(Object obj){
   if (person == null) return false;
   if (obj instanceof PersonAddress){
    PersonAddress pa = (PersonAddress) obj;
    return (this.city == pa.city && this.street == pa.street && this.number == pa.number); // + ještě udělat porovnání té osoby, jenže tam nevím, jak dostat ten odkaz na třídu Person.
   }
   return false;
  }
 
  public int hashCode(){
   return (city == null ? 11 : city.hashCode()) ^ (street == null ? 17 : city.hashCode()) ^ (number*31) ^ ((person == null) ? 0 : person.hashCode());

  }

}

}

Moc děkuju za jakýkoliv příspěvěk

Nahlásit jako SPAM
IP: 81.200.57.–
Reklama
Reklama
liborb
~ Redaktor
+18
Guru
5. 11. 2012   #2
-
0
-

Tam by mělo stačit něco takového, ne?

this.person.eguals(pa.person);
Nahlásit jako SPAM
IP: 188.75.135.–
Začátečník11
~ Anonymní uživatel
2 příspěvky
5. 11. 2012   #3
-
0
-

Aha, děkuju moc.

Nahlásit jako SPAM
IP: 81.200.57.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 30 hostů

Podobná vlákna

Vracení odkazu na objekt — založil x-time

Objekt v objekte — založil zakkly

Objekt s číslem — založil Paulí

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý