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 :

Questions pour ceux qui pensent JAVA


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2009
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 139
    Par défaut Questions pour ceux qui pensent JAVA
    Bonjour, j'ai ici certaine question pour ceux qui pense JAVA:
    1. Lorsqu'une classe de méthode essaie de reccupérer une variable de la methode ou ce trouve cette classe, on nous oblige de la déclarer final.
      C'est vrai que cette variable primitif réside dans le stack alors que l'objet instancié de la "method class" réside dans le heap, alors....??

    1. Pour les classes et méthodes génériques génériques est ce qu on peut mettre G,h,a,R à la place de T??
      faites attention au caractere en miniscule!!

    1. une "inner class" peut avoir les meme access modifier qu'une simple méthode?? si oui c plus une classe?? non??

    Cordialement

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par khaigo Voir le message
    1. Lorsqu'une classe de méthode essaie de reccupérer une variable de la methode ou ce trouve cette classe, on nous oblige de la déclarer final.
      C'est vrai que cette variable primitif réside dans le stack alors que l'objet instancié de la "method class" réside dans le heap, alors....??
    Je ne suis pas sûr de bien comprendre ce que tu veux dire...

    Mais les types primitifs sont stocké à différents endroits selon leurs types :
    • Lorsqu'il s'agit d'une variable locale, elles sont stocké dans le stack.
    • Lorsqu'il s'agit d'un membre d'une classe, elles sont stocké dans le heap (tout comme l'instance de la classe)




    Citation Envoyé par khaigo Voir le message
    1. Pour les classes et méthodes génériques génériques est ce qu on peut mettre G,h,a,R à la place de T??
      faites attention au caractere en miniscule!!
    Heu... Pourquoi on ne pourrait pas ????
    Pour les minuscules, cela en devient surtout pas très lisible...

    Citation Envoyé par khaigo Voir le message
    1. une "inner class" peut avoir les meme access modifier qu'une simple méthode?? si oui c plus une classe?? non??
    Pourquoi ce ne serait plus une classe ???


    a++

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2009
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 139
    Par défaut
    bonjour,
    merci pour la reponse.
    en ce qui concerne mon premier point voici un petit exemple c surtout pour les types primitifs:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    class maClass{
         int x;
         void meMethode(){
               int y;
               class methodeClass{
                       void m(){
                              x++;  // ca se passe tres bien
                              y++; //erreur de compilation: y must be declared final  
                       }
               }
       }
    }

  4. #4
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Lorsque tu accèdes à une variable locale d'une méthode dans une classe anonyme, le compilateur effectue en réalité une copie.

    Ainsi dans ton code tu as deux variables y distinctes. Ce qui fait que si tu modifies la valeur d'une d'entre elle, cela n'impactes pas la seconde.


    Pour éviter ce genre d'erreur les variables doivent être défini en final, afin de ne pas être modifiée.


    a++

  5. #5
    Membre confirmé
    Inscrit en
    Janvier 2009
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 139
    Par défaut
    Bonjour,
    merci pour votre intéret a mon topic.
    C'est vrai que ma class interne ne prend qu'une copie. et c'est général: qu'on en passe une variable a une methode ce n'est qu'une copie de la variable qu'on passe.
    Mais cela n'explique pas vraiment mon cas. D'ailleurs on passe toujours des copies de variables a des methodes, mais le compilateur n'a jamais fais des soucis pour nous.
    Alors il me parait qu'avec ces classes internes ca doit etre autres choses qui ne va pas tres bien:
    voila une idée qui me tourne dans la tete: si on instance un objet, il persiste dans le heap alors que le variable de la classe réside dans le steak et elle aurra la durée de vie de sa méthode. Alors...ca vous dit quelque chose??!!

  6. #6
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par khaigo Voir le message
    Mais cela n'explique pas vraiment mon cas.
    Pour accéder à une variable locale depuis une classe anonyme, il FAUT la déclarer final...

    Citation Envoyé par khaigo Voir le message
    voila une idée qui me tourne dans la tete: si on instance un objet, il persiste dans le heap alors que le variable de la classe réside dans le steak et elle aurra la durée de vie de sa méthode. Alors...ca vous dit quelque chose??!!
    Pas trop compris où tu voulais en venir...

    a++

Discussions similaires

  1. Pour ceux qui pensent que leur anti-virus s'appelle Linux
    Par fregolo52 dans le forum Sécurité
    Réponses: 6
    Dernier message: 13/04/2012, 16h37
  2. question pour ceux qui ont fait 1 ere année informatique
    Par sabyna dans le forum Assembleur
    Réponses: 2
    Dernier message: 08/04/2012, 16h55
  3. Réponses: 21
    Dernier message: 13/10/2006, 13h12

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