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 :

Redéfinir un constructeur dans une classe interne anonyme


Sujet :

avec Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2006
    Messages : 201
    Points : 75
    Points
    75
    Par défaut Redéfinir un constructeur dans une classe interne anonyme
    Bonjour,

    Petite question je planche actuellement sur les classes interne anonyme
    Est il possible de redéfinir le constructeur d'une classe interne anonyme ??
    J'imagine que non mais ...

    Merci d'avance

  2. #2
    Membre chevronné
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Points : 1 806
    Points
    1 806
    Par défaut
    Non, on ne peut pas, ça serait d'ailleurs très étrange, vu que de toute façon tu peux ajouter toutes les modifications internes que tu veux dans le code avec un bloc d'initialisation.

    Par exemple :

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    package com.test;
     
    public class TestInternal {
     
    	private String valeur = "Main : ";
     
    	public void setValeur(String valeur) {
    		this.valeur = valeur;
    	}
     
    	public String getValeur() {
    		return this.valeur;
    	}
     
     
    	public static void main(String... args) {
    		new TestInternal().test();
    	}
     
    	public void test() {
    		TestInternal t = new TestInternal() {
    			{ this.setValeur("Internal : "); }
    			public void test() {
    				System.out.println(getValeur() + this.getClass().getName());
    			}
    		};
    		t.test();
    		System.out.println(getValeur() + this.getClass().getName());
    	}
     
    }

  3. #3
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par Rei Ichido Voir le message
    Non, on ne peut pas, ça serait d'ailleurs très étrange, vu que de toute façon tu peux ajouter toutes les modifications internes que tu veux dans le code avec un bloc d'initialisation.
    Pas si la classe anonyme hérite d'une autre classe dont on veut appeler un constructeur qui a des paramètres.

    Dans ce cas-là, pas le choix, la classe doit avoir un nom.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre chevronné
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Points : 1 806
    Points
    1 806
    Par défaut
    Tu peux utiliser la classe anonyme avec tout constructeur à paramètres existant dans la classe de base, et changer les choses a fortiori !

    Cela dit, on est d'accord que s'il te faut lourdement remanier le code, c'est qu'a priori tu ne tombes plus dans le cas où il est utile d'avoir une classe anonyme, et donc en effet il faut nommer la classe.

    Edit : exemple ci-dessus updaté :

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    package com.test;
     
    public class TestInternal {
     
    	public TestInternal(String valeur) {
    		this.valeur = valeur;
    	}
     
    	private String valeur;
     
    	public void setValeur(String valeur) {
    		this.valeur = valeur;
    	}
     
    	public String getValeur() {
    		return this.valeur;
    	}
     
     
    	public static void main(String... args) {
    		new TestInternal("Main : ").test();
    	}
     
    	public void test() {
    		TestInternal t = new TestInternal("a") {
    			{ this.setValeur("Internal : "); }
    			public void test() {
    				System.out.println(getValeur() + this.getClass().getName());
    			}
    		};
    		t.test();
    		System.out.println(getValeur() + this.getClass().getName());
    	}
     
    }

Discussions similaires

  1. pas de constructeur dans une classe
    Par womannosky dans le forum Langage
    Réponses: 2
    Dernier message: 24/06/2008, 10h16
  2. Réponses: 8
    Dernier message: 17/04/2007, 11h35
  3. [c#] Plusieurs constructeurs dans une classe
    Par Seth77 dans le forum C#
    Réponses: 3
    Dernier message: 04/09/2006, 12h28
  4. Réponses: 2
    Dernier message: 04/12/2005, 21h10
  5. [Thread] Erreur dans une classe interne
    Par totof2308 dans le forum Général Java
    Réponses: 5
    Dernier message: 03/06/2004, 08h15

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