equals (Override) mit eigener Exception (keine Runtime-Exception)

iTobi97

Aktives Mitglied
Hallo liebe Community,
ich studiere seit kurzem Informatik an einer Hochschule, in den ersten Semestern programmieren wir unter anderem in Java. Bei der neuesten Aufgabe ist bei mir eine Frage aufgetreten, auf die ich bisher keine Antwort im Internet gefunden habe: Wenn ich in einer Klasse die equals-Methode überschreibe (@Override), möchte ich gerne eine eigene Exception (keine Runtime-Exception und auch nicht von Runtime-Exception geerbt) werfen können. Der Eclipse-Compiler meldet sich da allerdings mit mehreren Fehlermeldungen:

- Exception AlreadyExistingObject is not compatible with throws clause in Object.equals(Object)
- Syntax error on token "throws", @ expected after this token
- Syntax error, insert "SimpleName" to complete ClassType
- Syntax error, insert "SimpleName" to complete ClassType
- overrides java.lang.Object.equals
- Exception AlreadyExistingObject is not compatible with throws clause in Object.equals(Object)

Die Signatur meiner Funktion sieht folgendermaßen aus:
@Override
public boolean equals(Object compareTo) throws AlreadyExistingObject() {
....
}

Die Signatur meiner Exception:
public class AlreadyExistingObject extends Exception {
}


Ich habe das ganze mit einer Runtime-Exception probiert, mit der scheint das ganze auch zu funktionieren (insbesondere da Runtime-Exceptions ja unchecked Exceptions sind und nicht in der Signatur mit throws angegeben werden). Ich möchte meine equals-Methode mit einer eigenen Exception überschreiben (die nicht von RuntimeExceptions erbt). Ich hoffe, jemand kann mir hierbei weiterhelfen.

Das ist meine erste Frage in diesem Forum, ich hoffe also ich stelle eine nicht zu blöde Frage, oder verstoße gegen irgendwelche Forumsrichtlinien.

Vielen Dank schon einmal im Voraus.
VG
 

iTobi97

Aktives Mitglied
@mrBrown, danke das mit den Klammern war schon einmal ein guter Tipp, das mache ich leider noch häufig falsch.
Die Fehlermeldung sieht nun nur noch folgendermaßen aus:
- Exception AlreadyExistingObject is not compatible with throws clause in Object.equals(Object)
- overrides java.lang.Object.equals
Ich muss dir allerdings zustimmen, dass ich das schon vermutetet hatte, da sich ja die Signatur der equals-Methode ändern würde. Mir ist nun allerdings nicht klar, wie ich diese Aufgabe realisieren soll, ohne eine Runtime-Exception zu werfen. Es ist nicht zwingend nötig eine eigene Exception zu verwenden, nur darf die verwendete Exception (auch bereits vordefinierte) nicht von RuntimeExceptions erben. Und da (soweit ich weiß) nur RuntimeExceptions ohne Deklaration in der Signatur möglich sind, habe ich keine Ahnung, wie ich nach der Aufgabenstellung das Problem lösen soll.
 

mrBrown

Super-Moderator
Mitarbeiter
Es ist nicht zwingend nötig eine eigene Exception zu verwenden, nur darf die verwendete Exception (auch bereits vordefinierte) nicht von RuntimeExceptions erben. Und da (soweit ich weiß) nur RuntimeExceptions ohne Deklaration in der Signatur möglich sind, habe ich keine Ahnung, wie ich nach der Aufgabenstellung das Problem lösen soll.
Ohne die Aufgabenstellung zu kennen können wir dir da auch nicht helfen ;)
 

iTobi97

Aktives Mitglied
Ich weiß nicht, ob ich Ärger bekomme, wenn ich die Aufgabe online stelle, daher in etwas abgeänderter Form:
...Überschreiben Sie die equals-Methode des Klasse sinnvoll. Wenn ein Objekt hinzugefügt werden soll, das es bereits gibt, soll hier eine Exception (keine RuntimeException!) mit sinnvoller Fehlermeldung geworfen werden.
 

mrBrown

Super-Moderator
Mitarbeiter
Für mich liest sich das wie zwei getrennte Aufgabenteile.

equals ganz normal überschrieben, ohne Exception (die gegen den Contract verstoßen würde), und da wo equals genutzt wird im entsprechenden Fall die Exception werfen.
 

iTobi97

Aktives Mitglied
Das ist vermutlich dann tatsächlich die einzig mögliche Lösung. Ich werde das dann auf diese Weise noch einmal probieren. Vielen Dank für die Hilfe. Nur kurz eine Frage rein aus Interesse, ich habe schon einmal von Reflections gehört, und dass man damit eigentlich alle Objekte fast beliebig manipulieren kann, müsste es mit soetwas möglich sein, die Signatur (der erbenden Klasse) beim Überschreiben zu verändern?
 

mrBrown

Super-Moderator
Mitarbeiter
Das ist vermutlich dann tatsächlich die einzig mögliche Lösung. Ich werde das dann auf diese Weise noch einmal probieren.
Es ist nicht nur die einzig richtige Lösung, sondern deine Interpretation der Aufgabe ist vermutlich Humbug ;)

Nur kurz eine Frage rein aus Interesse, ich habe schon einmal von Reflections gehört, und dass man damit eigentlich alle Objekte fast beliebig manipulieren kann, müsste es mit soetwas möglich sein, die Signatur (der erbenden Klasse) beim Überschreiben zu verändern?

Ja, ist möglich.
Und Nein, das möchtest und solltest du nicht machen.
 
Ä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
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
H Equals hascode Java Basics - Anfänger-Themen 5
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