Ärger bei Umstellung von 1.4 auf 1.6

Status
Nicht offen für weitere Antworten.
O

oli001

Gast
Hallo,

ich habe eine Application (relativ alt). Sie wurde von mehreren Personen bearbeitet (seit ein paar Jahren) und dort gibt es auch Klassen, die mit einem Comparator arbeiten.
Bei Version 1.4 bekomme ich keine Fehler, bei 1.6 werden Fehler ausgespuckt, dass z.B. das Interface Comparable nicht mehrmals mit verschiedenen Argumenten implementiert werden kann "Comparable<file>, Comparable".

Nun... bei 1.4 funktioniert es aber nicht bei 1.6??

Wo ist der Unterschied, bzw. was ist die Ursache für solche Fehler?


Grüße Oli
 
S

SlaterB

Gast
gib bitte die genaue Fehlermeldung

die Notation <file> ist in 1.4 doch gar nicht erlaubt, wo kommt die her?
 
G

Gast

Gast
Hallo

Das System verwendet garantiert nicht Version 1.4. Generics sind erst in Version 1.5 hinzugefuegt worden !!!

Sprich wird in java 1.4 garantiert zu einem Compilerfehler fuehren: Comparable<file>, Comparable

Anmerkung:

Wenn du JDK 1.6 benutzt und auf 1.4 umstellst, weiss ich nicht, ob Sun dort irgendwas eingebaut hat, so dass Generics nicht ausgewertet werden...

Resultat einfach das Generics Interface loeschen und es sollte alles weiterhin funktionieren.
ABER stelle vorher sicher das sich ein JDK 1.6 in "Modus" 1.4 so funktioniert wie vermutet (Sprich ignorieren der Generics)
 
M

maki

Gast
Den Quellcode bitte, sollte doch nicht allzu groß sein für eine Comparator Klasse.
 
O

oli001

Gast
an gast:

naja es war 1.4 und da sind natürlich KEINE Generics. Jetzt kommen eben die Fehler und ein paar 1000 Warnungen, dass ArrayList usw. parametrisiert werden sollten. Gut die Warnungen kann ich ignorieren, aber die Fehler versteh ich net.
Ich muss dazu sagen dass ich diesem Projekt nur ein paar neue Sachen hinzufüge. Und ich wollte auf 1.6 umstellen und jetzt hab ich den salat...

grüße
 
G

Gast (ncohmal)

Gast
Hallo zum zweiten,

Korrekt, eine Klasse, Schnittstelle, kann nicht zweimal die Gleiche Schnittstelle aufweisen.

Deswegen der HINWEIS einfach den Generic rausschmeissen ABER vorher die angegebene Pruefung durchfuehren.
 
O

oli001

Gast
nochmal an gast:

ja da is ja eben das Problem <File> ist nirgendwo in diesem Projekt verwendet.

Grüße
 
G

Gast

Gast
jetzt ich verstehen.... :idea:

Du hast keine Klasse in der Compartor<File> steht sondern lediglich die Fehlermeldung worauf du geschlossen hast, dass es dort Probleme gibt....

Also einfach den von SlaterB geposteten Link anschauen und schon ist es klar.

In Kuerze :

java 1.4:
public class Test implements XY {
}

public class Test2 extends File implements XY {
}

--> keine Probleme

java 1.6:
public class Test implements XY<String> {
}

public class Test2 extends File implements XY {
}

--> Compilerfehler

und da in java 1.6 viele Klassen auf generics umgestellt wurden. Knallt es natuerlich gewaltig...

Sprich entweder Zeit nehmen und auf 1.6 umstellen (Vermutlich sehr nervig und zeitaufwendig ) oder 1.4 weiter benutzen....
 
O

oli001

Gast
Hi nochmal.

Naja ich hab zwar den Link gelesen, bin aber ehrlich gesagt nicht schlau daraus geworden.


Was soll ich tun?


Gruß oli
 
S

SlaterB

Gast
die Klasse File implementiert Comparable<File> mit compareTo(File other)
nun darft du nicht noch das Interface Comparable implementieren + compareTo(Object other)

was sollst du tun? die Interface ändern oder keine Subklasse von File verwenden oder sowas in der Art,
wie genau das klappt kann ich spontan nicht erklären,
ist in manchen festgefahrenen Designs vielleicht kaum möglich,

aber jede Subklasse von File ist automatisch Comparable, ist also unnötig, das im Interface nochmal anzugeben
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben