IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

java.lang.Integer pas finalisable ?


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Avatar de Khaled.Noordin
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    354
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 354
    Billets dans le blog
    1
    Par défaut java.lang.Integer pas finalisable ?
    Bonjour/Bonsoir a tous
    Essayant de me débarrasser le plus possible des types primitifs, l'utilisation de Integer dans le code 1 m'envoie le warning
    attribute value must be constant
    code 1
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    import javax.validation.constraints.*;
    import java.io.Serializable;
     
     
    public class Answer implements Serializable {
     
     private static final long serialVersionUID = 2924588702765525250L;
     public static final Integer ANSWER_MAX_SIZE = 65000;
     private String answer;
     
     public Answer() {
      super();
     }
     
     @NotNull
     @Size(max = ANSWER_MAX_SIZE)
     public String getAnswer() {
      return answer;
     }
     
     
     public void setAnswer(String answer) {
      this.answer = answer;
     }
    }

    code 2
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    import javax.validation.constraints.*;
    import java.io.Serializable;
     
     
    public class Answer implements Serializable {
     
     private static final long serialVersionUID = 2924588702765525250L;
     public static final int ANSWER_MAX_SIZE = 65000;
     private String answer;
     
     public Answer() {
      super();
     }
     
     @NotNull
     @Size(max = ANSWER_MAX_SIZE)
     public String getAnswer() {
      return answer;
     }
     
     
     public void setAnswer(String answer) {
      this.answer = answer;
     }
    }

    Je ne comprends pas pourquoi mon utilisation de java.lang.Integer déclaré public static final ne me permet pas qu'il soit vue comme une constante alors que le type primitif int dans le code 2 lui oui.

  2. #2
    Membre actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2011
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2011
    Messages : 65
    Par défaut
    Integer est une classe, int est un type, je ne suis pas sûr mais ça vient probablement de là...

  3. #3
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 690
    Par défaut
    Tout simplement parce que les constantes ne sont possible qu'avec les types primitifs et la la classe String.

    Toutes les autres classes ne sont pas gérées en tant que constantes mais en tant que référence statique finale classique. Pour plus de précision sur les constantes: http://java.developpez.com/faq/java/...TION_constante

  4. #4
    Membre actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2011
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2011
    Messages : 65
    Par défaut
    Merci d'avoir préciser la chose de manière plus propre ça va mieux dans ma tête

  5. #5
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Par défaut
    bonjour,

    Mais pourquoi souhaites tu enlever les primitifs ? quel est l’intérêt ?
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre très actif
    Avatar de Khaled.Noordin
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    354
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 354
    Billets dans le blog
    1
    Par défaut
    Merci de vos réponses et participation au sujet, le but de ma démarche est d'avoir une approche tout objet tout simplement.

  7. #7
    Membre actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2011
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2011
    Messages : 65
    Par défaut
    Sachant qu'on considère à présent le type String plus ou moins comme un type primitif(puisqu'après tout ce n'est qu'un char[]) je ne pense pas qu'il soit faisable d'ôter tous les primitifs mais bon courage quand même

  8. #8
    Membre très actif
    Avatar de william44290
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Juin 2009
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 400
    Par défaut
    la démarche est absurde. l'utilisation de type primitif n'est pas incompatible avec la poo

  9. #9
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Par défaut
    C'est bien ce que je redoutais, les primitives ne sont effectivement pas incompatible avec la POO !
    De plus tu as besoin de les garder, car tu risques au final d'être confronté a des problèmes. Et tu va considérablement dégrader les perfs, il y a un certains nombre de chose que tu dois rater.
    On va prendre un exemple simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Integer ANSWER_MAX_SIZE = 65000; // depuis la 1.5 uniquement, hé oui ca marche pas en 1.4
    Lorsque tu écris ça c'est comme si tu écrivais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Integer ANSWER_MAX_SIZE = new Integer(65000);
    depuis le 1.5 il est apparu ce que l'on appel l'autoboxing, c'est un avantage mais aussi (pour celui qui ne sais pas ce que c'est) une catastrophe.
    En gros, ca permet de transformer un type simple en son wrapper sans passer par un new explicitement. Pratique lorsque l'on souhaite stocker des int dans une liste par exemple.
    tu peux donc faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Integer ANSWER_MAX_SIZE = 65000;
     
    int valSimple = ANSWER_MAX_SIZE;
    Maintenant je te laisse imaginer ce que fait le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Integer ANSWER_MAX_SIZE = 65000;
     
    Integer uneVal = 10;
     
    Integer result = ANSWER_MAX_SIZE + uneVal;
    Sérieusement, laisses tomber le passage en tout objet et garde les primitive.
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 24/05/2011, 10h16
  2. Réponses: 2
    Dernier message: 24/02/2009, 13h24
  3. java.lang.Integer avec Axis1.4
    Par clement42 dans le forum Services Web
    Réponses: 3
    Dernier message: 20/07/2007, 14h49
  4. [JSTL] Attempt to coerce a value of type "java.lang.Integer" to Boolean
    Par jamalmoundir dans le forum Taglibs
    Réponses: 3
    Dernier message: 26/06/2007, 10h40
  5. Réponses: 1
    Dernier message: 01/05/2007, 13h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo