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
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
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()); } }
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()); } }
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager