Partage
  • Partager sur Facebook
  • Partager sur Twitter

Générécité sur Class Id

Sujet résolu
    28 novembre 2015 à 12:35:33

    Bonjour à tous et à toutes !

    Voilà j'aimerais que toutes mes classes aient un Id (Class Id)
    Cette Classe Id je veux la rendre Serializable et implémentant Comparable mais je n'y arrive pas.

    J'ai essayé :

    public final class Id<K> implements Comparable<Id> ,Serializable {
    
        public final K ID;
    
        public Id(K ID) {
            this.ID = ID;
        }
    
        @Override
        public boolean equals(Object o) {
            if (this == o) return true;
            if (o == null || getClass() != o.getClass()) return false;
            Id id = (Id) o;
            if (ID!= null ? !ID.equals(id.ID) : id.ID!= null) return false;
            return true;
        }
    
        @Override
        public int hashCode() {
            return ID != null ? ID.hashCode() : 0;
        }
    
        @Override
        public String toString() {
            StringBuilder stringBuilder = new StringBuilder();
            stringBuilder.append("Class : Id \n");
            stringBuilder.append("Id : " + getId());
            return stringBuilder.toString();
        }
    
        public K getId() {
            return ID;
        }
    
        @Override
        public int compareTo(Id another) {
            return ID.compareTo(another.getId());
        }
    }

    Mais je n'ai pas acces a la méthode compareTo pour ID puisque ne connaissant pas le type et par conséquent ne connaissant pas si ça implémente Comparable; même si ID et another.getID() sont de même type.

    Si quelqu'un a une astuce ?
    Je vous remercie !

    -
    Edité par Maxtill 28 novembre 2015 à 12:36:28

    • Partager sur Facebook
    • Partager sur Twitter
      28 novembre 2015 à 13:28:57

      Bonjour.

      ID.compareTo(another.getId())
      ID
      est de type K
      Tu appelles la méthode compareTo dessus : mais est-ce qu'elle existe ?

      Tu peux ajouter une contrainte sur ton type générique : class Id<K extends Comparable<K>>
      Ainsi le type que tu passeras en paramètre devras être de type Comparable.

      Tu rencontreras encore l'erreur ligne 37, je te laisse chercher.

      Au passage, les warning c'est la mauvaise pratique !

      • Ligne 1 : The serializable class Id does not declare a static final serialVersionUID field of type long
      • Ligne 1, 13 et 36 : Id is a raw type. References to generic type Id<K> should be parameterized
      • Partager sur Facebook
      • Partager sur Twitter
      Angular 2 est l'avenir, jQuery c'est de la merde !!! - Java 8 c'est l'an 2016+ (programmez en 1 ligne)

      Générécité sur Class Id

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown