# Java Annotation Problem



## chris-gz (1. März 2011)

Hi ich hab da ein kleines Problem mit Java wie der Titel schon sagt. Da ich momentan diese Sprache erst seid 3 Wochen benutze hab ich auch noch nicht die große Erfahrung darin. Bevor ich jetzt den Fehler poste erst mal ein Beispielprogramm welches ebenfalls diesen Fehler hervorbringt:

// Datei Kap07/ListenDemo.java

import java.util.LinkedList;
import java.util.*;
import java.util.Iterator;
import java.util.Collections;
import java.lang.annotation.*;




public class ListenDemo {
   public static void main(String args[]) {
       Item aktuell = new Item("Dirk", 34232424);
       System.out.println(aktuell);

       LinkedList<Item> freunde = new LinkedList<Item>();

       //freunde.add(new Integer(5));
       freunde.add(aktuell);
       freunde.add(new Item("Peter", 78798798));
       freunde.add(new Item("Katja", 243238766));


       //Nach Dirk einfügen
       freunde.add(1, new Item("Julia", 47243284));
       System.out.println(
           "Telefonliste\n------------------------------");
                   System.out.println("a) direkt");
                   System.out.println(freunde);

                   System.out.println("\nb) mittels for-schleife");
                   for (int i=0; i < freunde.size();i++) {
                       aktuell = (Item) freunde.get(i);
                       System.out.println(aktuell);
                       }

                    System.out.println("\nc) mittels for-each-schleife");
                    for (Item item : freunde) {
                        System.out.println(item);
                        }

                    System.out.println("\nc) mittels eines Iterator");
                                    Iterator<Item> it = freunde.iterator();
                                    while(it.hasNext()) {
                                    System.out.println(it.next());
                        }
                    Collections.sort(freunde);
                    System.out.println("\nNach der Sortierung");
                        for (Item item : freunde) {
                        System.out.println(item);
                        }


            }
        }

class Item implements Comparable<Item> {

    String name;
    int nummer;

    Item(String name, int nummer){
        this.name = name;
        this.nummer = nummer;
        }

    @Override
    public String toString() {
        return name + ": " + nummer;
    }

    public int compareTo(Item item) {
        return -name.compareTo(item.name);
}
} 

Ich habe jetzt mal die Annotationstelle Rot markiert damit jeder gleich sieht worum es geht. Mein Problem ist jetzt das ich hier 3 Rechner stehen hab wobei sich das Prog. ohne Probleme auf 2en übersetzen lässt. Lediglich bei meinem Hauptrechner wo es mir am wichtigsten ist das alles einwandfrei läuft bekomme ich bei der Übersetzung folgenden Fehler:

C:\Dokumente und Einstellungen\KKHBG2B\Desktop\Projekte\Java\mut\Kapitel7\ListenDemo.java:68: incompatible types
found   : Override
required: java.lang.annotation.Annotation
    @Override
     ^
1 error

Tool completed with exit code 1

Mein OS ist Win XP (32 bit).
JDK: Update 24 (via Console wird auch die aktuelle Version von javac angezeigt).

Im Moment nehm ich zum übersetzen das Textpad welches ja den selben fehler anzeigt wie CMD. Suchpfad ist korrekt gesetzt und ohne @Override lässt sich das Programm problemlos kompilieren. Bisher habe ich Java schon X mal neu installiert (vorher komplett deinstalliert) und weis einfach nicht mehr weiter. Mir kommt es vor als könnte er das @ nicht erkennen hab aber keine Ahnung ob das stimmt und woher das kommt.

Ich wäre echt dankbar für jeden Lösungsvorschlag von euch.

Gruß Chris


----------



## Ahab (1. März 2011)

Hmm deine Klasse Item wird bei mir in Eclipse problemlos kompiliert, sowohl mit @Override als auch ohne.  Hast du es einfach mal ohne @Override versucht? Laut Javadoc enthält das Interface Comparable gar keine Methode namens "toString", die bei der Integration überschrieben werden müsste. Setze das @Override doch mal vor die Methode compareTo(); und toString(); davor. 

Wobei es echt komisch ist, dass der Code auf 2 von 3 Rechnern läuft...


----------



## chris-gz (2. März 2011)

Habs ja auch schon ohne das @Override gemacht wie ich geschrieben habe. Das Problem ist das diese Annotation ja zur Sicherheit gilt damit hier nichts überschrieben wird ohne eine Fehlerrückmeldung zu bekommen. In dem Prog ist das ja nicht weiter schlimm aber halt dann in Projekten die korrekt arbeiten sollen.

Was verwunderlich ist, ist das alle anderen Annotation's die ich bisher nutzen wollte auch funktioniert haben. Beispielsweise funktioniert @SuppressWarnings einwandfrei bei der Übersetzung.


----------

