2010-03-05 31 views
3

Je ne vois pas tout ce que je fais mal, mais NetBeans me donne l'erreur suivante:Java Comparable La méthode d'interface compareTo

incomparable types 
required: boolean 
found: java.lang.Object 


public int compareTo(Object obj) { 
    if(obj instaceof Employee){ 
     Employee employee = (Employee) obj; 
     if(this.weekly_earnings > employee.weekly_earnings) 
      return 1; 
     else if(this.weekly_earnings == employee.weekly_earnings) 
      return 0; 
     else 
      return -1; 
    } 
    else{ 
     System.out.println("Error"); 
    } 
} 
+3

instaceof n'existe pas –

+2

Et il ne renvoie rien du cas d'erreur (devrait lancer 'ClassCastException', devrait utiliser des génériques). –

+1

Je voudrais aussi ajouter qu'il serait probablement mieux si vous venez de revenir (this.weekly_earnings - employee.weekly_earnings), enregistre sur toutes les déclarations if. – DaveJohnston

Répondre

6

Il est écrit instanceof. En outre, comme Tom Hawtin mentionné dans un commentaire, si vous utilisez Java 1.5 ou plus tard, vous pouvez écrire compareTo(Employee emp) pour éviter d'utiliser instanceof du tout. Il y a une section complète sur l'écriture des types comparables dans le tutoriel Java Object Ordering.

+0

Cela ne donnerait-il pas une erreur de syntaxe? Essayez une build propre ou redémarrez netbeans. – Pindatjuh

+0

@Pindatjuh: Il donne l'erreur de syntaxe "types incomparables ..." –

+0

vous avez raison. Je ne peux pas croire que j'ai fait cette erreur – user69514