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

avec Java Discussion :

Comment utiliser une classe interne


Sujet :

avec Java

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2008
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 197
    Points : 117
    Points
    117
    Par défaut Comment utiliser une classe interne
    Salut,
    J'ai crée une classe qui contient une classe interne comme indique le code suivant :
    Code : 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
     
    public class Test{
     
    	public class Television {
    		public String channel;
     
    		public Television() {
    			this.channel = "MyChannel";
    		}
    	}
     
    	public static void main(String[] args) {
     
    		Television tv = new Television();
     
    	}
    }
    Le compilateur affiche une erreur lors de la création de l'objet tv, voici les messages d'erreurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Multiple markers at this line
    	- The local variable tv is never read
    	- No enclosing instance of type Test is accessible. Must qualify the allocation with an enclosing  instance of type Test(e.g. x.new A() where x is an instance of Test).
    J'ai pas compris le message d'erreur, j'ai essayé de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Test.Television tv  = new Test.Television();
    Il m'affiche le même message d'erreur, ou encore :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Test t = new Test(); 
    t.Television
    Television n'existe pas dans l'objet Test.

    comment je peux corriger cette erreur ? Avec explication, et merci d'avance.

  2. #2
    Membre confirmé Avatar de javaNavCha
    Homme Profil pro
    EKG Group
    Inscrit en
    Juillet 2009
    Messages
    311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Tunisie

    Informations professionnelles :
    Activité : EKG Group
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2009
    Messages : 311
    Points : 631
    Points
    631
    Par défaut
    Bonjour
    Voici le code correct
    et à toi de m'expliquer l'erreur ; )
    Code : 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
    public class Test{
     
     
     
     
    	Test(){
    		Television tv = new Television();
    	}
    	public class Television {
    		public String channel;
     
    		public Television() {
    			this.channel = "MyChannel";
    		}
    	}
     
    	public static void main(String[] args) {
     
    	new Test();
     
    	}
    }
    On essaie
    et ça marchera

    Mon site
    Ma page

  3. #3
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    votre classe Television ne peux exister que dans une instance de Test au vu de votre déclaration. Il existe 3 moyens pour résoudre votre problème:

    1) faire de Television un classe à part, dans son propre fichier

    2) faire de Television une classe interne statique, elle n'aura alors plus besoin d'instance de Test pour exister:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public class Test{
    	public static class Television {
    		public String channel;
    		public Television() {
    			this.channel = "MyChannel";
    		}
    	}
    	public static void main(String[] args) {
    		Television tv = new Television();
    	}
    }
    3) créer une instance de Test
    Code : 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
     
    public class Test{
            public Television createTelevision(){
                return new Television();
            }
     
    	public class Television {
    		public String channel;
     
    		public Television() {
    			this.channel = "MyChannel";
    		}
    	}
     
    	public static void main(String[] args) {
                    Test test = new Test();
                    // option 1
                    Television tv = test.createTelevision();
                    // option 2
                    Television tv2 = test.new Television();
     
    	}
    }

  4. #4
    Membre confirmé Avatar de javaNavCha
    Homme Profil pro
    EKG Group
    Inscrit en
    Juillet 2009
    Messages
    311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Tunisie

    Informations professionnelles :
    Activité : EKG Group
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2009
    Messages : 311
    Points : 631
    Points
    631
    Par défaut
    Merci tchize_ pour l'explication
    Mais je voulais qu'il comprenne l'erreur de conception qu'il a fait
    On essaie
    et ça marchera

    Mon site
    Ma page

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

Discussions similaires

  1. [1.x] comment utiliser une class métier perso ?
    Par guiyomh dans le forum Symfony
    Réponses: 2
    Dernier message: 19/11/2008, 12h56
  2. Comment utiliser une classe Java dans une appli PB ?
    Par bobychezA56 dans le forum Powerbuilder
    Réponses: 0
    Dernier message: 09/04/2008, 18h07
  3. Réponses: 0
    Dernier message: 31/03/2008, 11h36
  4. Comment utiliser une classe ?
    Par toinou62 dans le forum ASP
    Réponses: 1
    Dernier message: 09/10/2007, 21h39
  5. Réponses: 2
    Dernier message: 05/08/2006, 13h29

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