type safety p5

benrub
Mausschubser
Mausschubser
Beiträge: 48
Registriert: 3. Dez 2006 01:26

type safety p5

Beitrag von benrub »

Hallo,
bekomme bei der Key-methode compareTo (also zb. (key dieses nodes).compareTo(gegebener key)) eine gelbe markierung namens:

Code: Alles auswählen

Type Safety: The method compareTo(Object) belongs to the raw type Comparable. References to the generic Type should be parametisized.
Nun habe ich nicht so viel Ahnung von Generics. Kann ich diese Warnung ignorieren? Ein Typecast von wegen ".compareTo((Key)key" wird komplett rot.
Ist ja eigentlich nicht so schön, Code gelb markiert lassen zu müssen. Gibt es da einen Weg außenrum?


Außerdem noch eine Frage: Falls uns bei einer der gazen Methoden ein key == null übergeben wird, sollen wir dann eine exception werfen?

debach
Windoof-User
Windoof-User
Beiträge: 27
Registriert: 18. Mai 2007 15:59
Kontaktdaten:

Beitrag von debach »

Du hast irgendwo vergessen, die Parametrisierung eines Objektes anzugeben. Vielleicht hast du eine Variable "BinarySearchTree t1" anstelle von "BinarySearchTree<Key, Data> t1". Genauer kann ich das im Moment nicht formulieren.

Benutzeravatar
Skullz
Mausschubser
Mausschubser
Beiträge: 44
Registriert: 23. Mai 2007 16:21

Beitrag von Skullz »

Ich habe bei der add-Funktion für key==null oder data==null eine Exception geworfen.
Bei den anderen hab ich keine Exception geworfen, sondern hab's vergessen.
Aber funktioniert trotzdem.
Zuletzt geändert von Skullz am 26. Mai 2007 11:29, insgesamt 1-mal geändert.

benrub
Mausschubser
Mausschubser
Beiträge: 48
Registriert: 3. Dez 2006 01:26

Beitrag von benrub »

debach hat geschrieben:Du hast irgendwo vergessen, die Parametrisierung eines Objektes anzugeben. Vielleicht hast du eine Variable "BinarySearchTree t1" anstelle von "BinarySearchTree<Key, Data> t1". Genauer kann ich das im Moment nicht formulieren.
Bin eben mal den ganzen Code durchgegangen, bis auf eine Stelle steht nirgendswo BinarySearchTree ohne <Key,Data> dahinter, und das ist der Konstruktor..

Es geht um den Key, der in den Methoden übergeben wird, der Probleme macht, und die übergebenen Variablen kann ich nicht parametisieren, oder?

Benutzeravatar
Skullz
Mausschubser
Mausschubser
Beiträge: 44
Registriert: 23. Mai 2007 16:21

Beitrag von Skullz »

@benrub
Hast du dir die aktuellste Praktikumsvorlage geholt?
Da steht nämlich:
public class BinarySearchTree <Key extends Comparable<Key>, Data>

Könnte es vielleicht sein, dass bei dir das "extends..." fehlt?

debach
Windoof-User
Windoof-User
Beiträge: 27
Registriert: 18. Mai 2007 15:59
Kontaktdaten:

Beitrag von debach »

Vielleicht schickst du mal ein bisschen mehr Code. Dann kann man einfacher darüber nachdenken.

benrub
Mausschubser
Mausschubser
Beiträge: 48
Registriert: 3. Dez 2006 01:26

Beitrag von benrub »

Skullz hat geschrieben: public class BinarySearchTree <Key extends Comparable<Key>, Data>

Könnte es vielleicht sein, dass bei dir das "extends..." fehlt?
Genau das wars, danke! Hat sich sonst noch was geändert - ergo kann ich das von Hand geändert lassen? :)

Benutzeravatar
Skullz
Mausschubser
Mausschubser
Beiträge: 44
Registriert: 23. Mai 2007 16:21

Beitrag von Skullz »

Soweit ich weiß, hat sich nichts geändert.
Ich würd's an deiner Stelle so lassen.

Benutzeravatar
marlic
Computerversteher
Computerversteher
Beiträge: 365
Registriert: 5. Okt 2006 11:09
Wohnort: Dietesheim

Beitrag von marlic »

Du musst ganz einfach nicht compareTo(Object o) überschreiben, sondern compareTo(Key k)!

(Wofür hat man denn sonst Comparable mit dem Typparameter!)

Benutzeravatar
Ottifanti
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 113
Registriert: 22. Nov 2005 15:49

Beitrag von Ottifanti »

Soweit ich das verstanden habe, wird key doch übergeben und bringt seine compareTo-Methode (praktisch) mit, ergo muß und wird da nichts von Euch überschrieben.

Soweit ich benrub verstanden habe, war es das "extends Comparable<Key>", das ihm Probleme bereitet hat??
Mostly harmless

Christoph B
Computerversteher
Computerversteher
Beiträge: 370
Registriert: 15. Okt 2006 18:28
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Christoph B »

marlic hat geschrieben:Du musst ganz einfach nicht compareTo(Object o) überschreiben, sondern compareTo(Key k)!

(Wofür hat man denn sonst Comparable mit dem Typparameter!)
Eben damit wir nix mit compareTo überschreiben müssen ^^

Benutzeravatar
Skullz
Mausschubser
Mausschubser
Beiträge: 44
Registriert: 23. Mai 2007 16:21

Beitrag von Skullz »

benrub hat geschrieben:
Skullz hat geschrieben: public class BinarySearchTree <Key extends Comparable<Key>, Data>

Könnte es vielleicht sein, dass bei dir das "extends..." fehlt?
Genau das wars, danke! Hat sich sonst noch was geändert - ergo kann ich das von Hand geändert lassen? :)
Eigentlich hat sich das Problem schon erledigt. Weswegen würde sich benrub denn sonst bedanken?
Er hatte einfach die alte Vorlage, in der noch nicht "extends Comparable<Key>" stand und fertig. :)

Und überschrieben wird auch nix.

Antworten

Zurück zu „Archiv“