Equals hascode

H

hallo1987

Gast
Hallo,


Ich hatte bis eben 3 Fragen. Nun hab ich die anderen 2 lösen können und 3-2 = 1 Und diese eine Frage is mir noch offen...

Die Aufgabe, die heisst:

b) Überschreiben der Equals Methode für Temperatur. 2 Temperaturobjekte sollen gleich sein, wenn Werte für Ort und Wert gleich sind.

c) Warum wird bei Equals auch der HashCode überschrieben



Leider weiß Ich wirklich kaum was damit anzufangen, weiß bzw. wüsste jemand was man hier machen muss?...


lgg
 
H

hallo001987

Gast
Dir Oberklasse von equals() und hashCode() ist die Klasse Object. Sprich die Oberste Klasse in der Hierarchie.
Equals wird nur bei Objekten angewendet, da bei Objekten die Referenzen unterschiedlich ist, wird
auf die Gleicheit geprüft.




Die Methode equals sieht so aus:
public boolean equals(Object obj)

Equals liefert einen Booleschen Wert zurück, das heisst wenn 2 Objekte übereinstimmen, dann liefert Equals ein TRUE
stimmmen die Objekte nicht überein, dann ist dieses Automatisch FALSE.
Dann gabs noch folgenden Satz:
Dieses Objekt der Klasse Object ist immer das Objekt, mit dem das Objekt, von welchem die equals-Methode aus aufgerufen wurde, verglichen werden soll.
Ich glaub das bezog sich hierrauf:
Bottle b = (Bottle)obj;




Übrigens diesen Satz versteh ich ab, sobald dies funktioniert ... , nicht.
Wenn Sie also zwei Objekte vergleichen möchten, müssen Sie immer equals verwenden.
Dies funktioniert tadellos für Objekte von Klassen, die diese Methode überschrieben haben – was Ihre eigene Klasse von Natur aus nicht tut.





Und zu dem Quellcode versteh ich nicht wieso eigentlich bei beiden FALSE zurück gegeben wird.

Obwohl beide Objekte den selben Inhalt haben. Und dieses Downcast dann was bringt mir ein Downcast, wenn in meiner Klasse
die inhalte eigentlich stimmen...

also ich find das echt ein bissien komisch und kompliziert. Vielleicht liegts daran das ich das nicht nach voll ziehen kann.
aber für mich sehen die Objekte gleich aus. beide haben als inhalt 1.0F


Java:
    public class Bottle {
    
      private float capacity = 0;
      private String content = null;
    
     	 
       public void setCapacity(float capacity) {
         this.capacity = capacity;
      }
   
       public void setContent(String content) {
         this.content = content;
      }
   
   	public float getCapacity() {
        return this.capacity;
        }
      
       public String getContent() {
         return this.content;
      }
      
   	
   	  public boolean equals(Object obj) {
       
	    Bottle b = (Bottle)obj;
		 		// Primitiver Vergleich 						Objekt vergleich ->String content von this mit objekt Downcast
	    if (this.capacity == b.getCapacity() && this.content.equals(b.getContent())) {
	    
		 	 System.out.println("true");
		    return true;
	    }
	 	 
 		System.out.println("false");
		  return false;
		 }
   
   
       public static void main(String[] args) {
      
         Bottle b1 = new Bottle();
         Bottle b2 = new Bottle();
         Bottle b3 = new Bottle();
      
      
      	// Die Paremter der Methoden werden befüllt.
         b1.setContent("Wasser");
         b2.setContent("Wasser");
         b3.setContent("Cola");
      	
      //----------------------------- für die If abfrage gelten diese 3 Objekte:	
      // aber woher weis ich das nicht b1 von setContent mit b1 von setCapacity verglichen wird?
      	
         b1.setCapacity(1.0F);
         b2.setCapacity(1.0F);
         b3.setCapacity(0.5F);
      
      
      
         if (b1.equals(b2)) {
            System.out.println("Flasche1 hat den selben Inhalt wie Flasche2");
         }
         else {
            System.out.println("Flasche1 hat NICHT den selben Inhalt wie Flasche2");
         }
         if (b2.equals(b3)) {
            System.out.println("Flasche2 hat den selben Inhalt wie Flasche3");
         }
         else {
            System.out.println("Flasche2 hat NICHT den selben Inhalt wie Flasche3");
         }
      }
   
   
   
   }
 

AmunRa

Gesperrter Benutzer
Bei deinem Code gelten die Zwei Flaschen als Gleich , aber im Java Blogbuch war zu dem Zeitpunkt wo steht, dass sie nicht gleich sind die equals- Methode noch nicht überschreiben.
 
H

hallbb87

Gast
hallo,


ich weis das der bei mir im Code die flaschen gleich sind. Könnte jemand genau auf meine Fragestellung eingehen wieso vor dem downcast die nicht gleich sind und nach dem downcast gleich sind.


das versteh ich nicht. Hab mir den Link total durchgelesen aber ich checks nicht, da auch nicht wirklich erklärt wird wieso das so ist. Sondern es wird nur erwähnt, das es nicht funktioniert und man ein downcast machen muss das es funktioniert.
 

The_S

Top Contributor
Magst du deine erste Antwort noch ein bisschen leserlicher verfassen? Da kann man nämlich nicht unterscheiden, was jetzt von dir kommt, und was aus dem java-blog-buch kopiert wurde. So fällt es nur sehr schwer nachzuvollziehen, wo jetzt dein eigentliches Problem ist. Du kannst btw deine Fragen auch gerne als Kommentar direkt im Java Blog Buch stellen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Say Equals Java Basics - Anfänger-Themen 6
W LocalDate vergleichen mit Equals? Java Basics - Anfänger-Themen 7
W Equals-Methode überschreiben bei composition Java Basics - Anfänger-Themen 20
W Wann und warum hashcode und equals? Java Basics - Anfänger-Themen 14
X Datentypen String.equals funktioniert nicht Java Basics - Anfänger-Themen 5
C Long value an Stringbuilder übergeben, equals Methode funktioniert nicht Java Basics - Anfänger-Themen 2
J compareTo()- und equals-Methode Java Basics - Anfänger-Themen 3
S 2 Strings mit Equals vergleichen Java Basics - Anfänger-Themen 11
lallmichnichtzu Methoden Überladen des .equals-Operators Java Basics - Anfänger-Themen 6
C Objekt1.equals(Objekt2) = immer false. Wieso? Java Basics - Anfänger-Themen 22
NeoLexx equals()-Methode Verständnis Frage anhand Code Beispiel Java Basics - Anfänger-Themen 22
M Objekte mittels equals vergleichen Java Basics - Anfänger-Themen 14
S Interface Equals und hashCode Java Basics - Anfänger-Themen 16
G Java equals() Methode Java Basics - Anfänger-Themen 9
J equals funktioniert nicht - Warum Java Basics - Anfänger-Themen 13
B Date - Vergleich (equals / after) ? Java Basics - Anfänger-Themen 3
G Ratlosigkeit zur Aufgabe im Anhang (boolean, equals.) Java Basics - Anfänger-Themen 20
D Unterschied == und equals in Arrays Java Basics - Anfänger-Themen 2
O equals Methode möglichst effizient Java Basics - Anfänger-Themen 13
H equals methode Java Basics - Anfänger-Themen 1
L Logistiksystem Methode equals und hashcode Java Basics - Anfänger-Themen 20
J Methoden Equals Methode für Integer und Objekte überschreiben? Java Basics - Anfänger-Themen 9
M Erste Schritte Mehrere eingaben in einer Line vergleichen (if equals...) Java Basics - Anfänger-Themen 6
I equals (Override) mit eigener Exception (keine Runtime-Exception) Java Basics - Anfänger-Themen 9
A OOP Richtige Verwendung von ArrayList und equals Java Basics - Anfänger-Themen 24
E equals Prüfung fehlgeschlagen Java Basics - Anfänger-Themen 3
C Objekt equals Java Basics - Anfänger-Themen 2
L String überprüfen mit .equals .contains oder .matches? Java Basics - Anfänger-Themen 1
H equals Methode Java Basics - Anfänger-Themen 1
F String equals NULL Problem Java Basics - Anfänger-Themen 4
D Auf equals von Vaterklasse zugreifen Java Basics - Anfänger-Themen 4
S Methoden equals(object o) / toString Java Basics - Anfänger-Themen 15
E Calender - Equals Problem Java Basics - Anfänger-Themen 14
T Datentypen compareTo() u. equals() bei Strings Java Basics - Anfänger-Themen 3
Psypsy hashCode, equals und toString Java Basics - Anfänger-Themen 3
K hashCode, compareTo vs. equals Java Basics - Anfänger-Themen 3
M Vergleich zweier Array Stellen mit equals/NullpointerException Java Basics - Anfänger-Themen 9
S Unterschiede zwischen equals und contains Java Basics - Anfänger-Themen 2
F Erste Schritte Hilfe bei Übung zu String equals() und Schleifen Java Basics - Anfänger-Themen 8
A Probleme mit equals und get.Text Java Basics - Anfänger-Themen 12
S compareTo() und equals() Java Basics - Anfänger-Themen 6
S equals Methode bei String Java Basics - Anfänger-Themen 5
R illegal start of expression - 3 Strings vergleichen mit .equals () Java Basics - Anfänger-Themen 5
K Cast bei equals Java Basics - Anfänger-Themen 2
T SQL equals Java Basics - Anfänger-Themen 4
OnDemand Methoden Equals Methde Java Basics - Anfänger-Themen 3
D if block mit equals im rumpf Java Basics - Anfänger-Themen 11
K Vererbung equals-Methode bei Vererbung abstrakter Klassen Java Basics - Anfänger-Themen 8
SexyPenny90 Wieso ist diese eigene Equals-Methode schlecht? Java Basics - Anfänger-Themen 17
K String - Equals Java Basics - Anfänger-Themen 2
J Klassen Warum ist (a.equals(b)) gleich (a==b)? Java Basics - Anfänger-Themen 13
B Warum gibst hier Equals false zurück ? Java Basics - Anfänger-Themen 23
S Verständnissfrage equals() Java Basics - Anfänger-Themen 2
R compareTo & equals Java Basics - Anfänger-Themen 10
M Verschiedene Möglichkeiten mit 'equals' abdecken? Java Basics - Anfänger-Themen 9
M Collections Problem bei Überschreibung von hashcode() und equals() bei Hashset-Implementierung Java Basics - Anfänger-Themen 5
W Stringvergleich mit equals Java Basics - Anfänger-Themen 13
C equals() Java Basics - Anfänger-Themen 4
D Problem mit string.equals bzw string.contains Java Basics - Anfänger-Themen 4
T Problem mit der while(!string.equals("x")) Java Basics - Anfänger-Themen 2
E Equals-Methode auf Class-Object Java Basics - Anfänger-Themen 17
X problem mit equals.gelöst Java Basics - Anfänger-Themen 2
J Methode equals() Java Basics - Anfänger-Themen 7
M Equals überschreiben Java Basics - Anfänger-Themen 3
K equals() und hashcode() überschreiben Java Basics - Anfänger-Themen 5
K equals in Hashmap() Java Basics - Anfänger-Themen 4
B if equals(irgendeine Zahl+Buchstabe) Java Basics - Anfänger-Themen 6
T equals() und hashCode() Java Basics - Anfänger-Themen 7
D probs mit clone und equals Java Basics - Anfänger-Themen 10
3 Collections containsKey() liefert false obwohl equals() true liefert Java Basics - Anfänger-Themen 6
N Vergleich per equals Java Basics - Anfänger-Themen 5
S comparable und equals Java Basics - Anfänger-Themen 7
M Frage zu Textvergleich (equals) Java Basics - Anfänger-Themen 8
G Strings vergleichen mit equals, geht das kürzer? Java Basics - Anfänger-Themen 4
B Frage zu Funktion mit equals Java Basics - Anfänger-Themen 17
D Eigene equals methode schreiben Java Basics - Anfänger-Themen 4
J Gibt es eine möglichkeit ähnlich wie .equals(bedingung1 ||bedingung ..n) ? Java Basics - Anfänger-Themen 5
D "2010–03–12".equals( "2010-03-12" ) Java Basics - Anfänger-Themen 6
X Frage zur Implementierung von equals() Java Basics - Anfänger-Themen 2
T Problem mit equals Java Basics - Anfänger-Themen 5
K Equals,Instanceof und "==" Java Basics - Anfänger-Themen 7
C warum liefert equals kein TRUE Java Basics - Anfänger-Themen 12
E Java hashCode equals Problem Java Basics - Anfänger-Themen 2
S equals vergleich Java Basics - Anfänger-Themen 10
S Equals Downcast? Java Basics - Anfänger-Themen 11
D equals Vergleiche Java Basics - Anfänger-Themen 7
L String mit equals vergleichen Java Basics - Anfänger-Themen 6
neurox Tutorial equals und hashCode überschreiben Java Basics - Anfänger-Themen 33
F String equals null wird nicht angenommen. Java Basics - Anfänger-Themen 24
A Reihenfolge bei equals() Java Basics - Anfänger-Themen 2
P Toleranz bei equals Java Basics - Anfänger-Themen 4
B Frage zu equals() und hashCode() Java Basics - Anfänger-Themen 28
A veränderbar kanonische Klassen: Methode equals, hashcode, serializable Java Basics - Anfänger-Themen 5
D String#equals + String#charAt Java Basics - Anfänger-Themen 5
S equals() - hashCode() - Contract Java Basics - Anfänger-Themen 54
G mehrere Werte für .equals ? Java Basics - Anfänger-Themen 22
T [SOLVED] Java String equals funktioniert nicht Java Basics - Anfänger-Themen 5
C 2 Objekte (mathematisch) vergleichen in der equals Methode Java Basics - Anfänger-Themen 10
B String.equals(Object) anstatt "=" Java Basics - Anfänger-Themen 3
R Vergleiche mit Equals(), hashCode() und == Java Basics - Anfänger-Themen 10

Ähnliche Java Themen

Neue Themen


Oben