2017-10-04 2 views
0

J'écris un de mes premiers programmes traitant des génériques et des principes de POO standard en Java, cependant je rencontre un petit problème en traitant le type entier.Type entier ne fonctionnant pas comme prévu (Java)

J'ai remarqué que les entiers devraient avoir une méthode nommée compareTo (Integer anotherInteger) afin de les comparer comme vous le feriez.

Cependant, lorsque j'ai essayé d'implémenter cette méthode dans mon programme, j'ai rencontré un problème.

erreur ne peut pas trouver le symbole symbole: méthode compareTo (entier) emplacement: variable x de type entier où Integer est un type variable: étend Entier objet déclaré dans BinarySearchTree

Essentiellement, je x.comporeTo (y) où x & y sont de type Integer, mais la méthode compareTo n'est pas trouvée pour une variable de type Integer (x). Je ne sais pas comment résoudre ce problème, toute aide serait appréciée.

Merci

EDIT: J'ai fourni un petit exemple ci-dessous pour mettre en évidence mon problème. Je crois que je suis entier shadowing, mais je ne sais pas comment se déplacer faire telle ou comment résoudre le problème,

public class IntgS<Integer> 
    { 
      Intg<Integer> z = new Intg(3); 
      Intg<Integer> y = new Intg(2); 
      int w = (z.getX()).compareTo(y.getX()); 

      public class Intg<Integer> 
      { 
        private Integer x; 
        public Intg(Integer x) 
        { 
          this.x = x; 
        } 

        public Integer getX() 
        { 
          return x; 
        } 
      } 
    } 

Cela donne la même erreur que l'expression type entier variable z.getX() n'a pas de méthode .compareTo (Integer).

+4

Pourriez-vous fournir le code source de treeBuilder.java s'il vous plaît? –

+4

Afficher le code correspondant – rafid059

+4

Vous ne pouvez pas espérer que nous vous aidions avec une erreur pour laquelle vous avez fourni seulement un message d'erreur ... mais pas de code. – scottb

Répondre

6

Selon le message d'erreur BinarySearchTree a un paramètre de type appelé Integer qui ombrage le type standard java.lang.Integer.

+1

Ha. Peut-être que la question devrait être reformulée à ... "comment puis-je lire cette erreur?" – shinjw

+0

Merci Henry pour la direction. De quelle manière pouvez-vous expliquer plus en détail comment l'observation est liée au fragment de code que j'ai fourni ci-dessus? – byrnesj1

+0

Supprimez simplement le paramètre de type dans les deux classes. (c'est-à-dire 'class IntgS {...}') – Henry