Salut, est ce qq'un peut me dire où trouver la syntax pour initialiser un Hashmap static en java 1.5 ?
Merci
Salut, est ce qq'un peut me dire où trouver la syntax pour initialiser un Hashmap static en java 1.5 ?
Merci
Le fait qu'il soit static ne change en rien la façon de l'initialiser (new ....)
Je vois vraiment pas ou est le problème ?
La version n'a rien à voir dans ton problème. Cf faq.
C'est bon j'ai trouvé .. au fait ..
Mais je parlais de l'initialiser avec des valeurs, pas seulement d'instancier un objet HashMap vide ...
Enfin bref ... Et dans la FAQ il n'y a rien ladessus ...
Merci quand meme pour cette jolie tentative d'aide![]()
![]()
Enfin en même temps, vu la multitude des précisions dans la question on pouvait difficilement t'aider aussi !Menfin l'essentiel c'est que tu ais trouvé et que tu mettes le tag RESOLU !!!!!!!!
![]()
C'est surement quelque chose comme cela qu'il voulait :Matthieu
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Map m = new HashMap() {{ put("key1", "val1"); put("key2", "val2"); put("key3", "val3"); }};
Ouai un peu près sauf que c en static, et que en 1,5 on donne le type des objet contenu dans les Collections
Mais c bon j'ai trouvé![]()
Oui la généricité... Mais pas seulement dans les collections, dans les Comparator, ThreadLocal, Enumeration, Iterator etc...Envoyé par eXiaNazaire
Le code du bloc est exécuté AVANT ou APRÈS l'appel au constructeur?Envoyé par McFoggy
Un simple petit test répond après (sinon aucun intéret effectivement):Envoyé par ®om
le resultat d'execution
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 public class MyMap extends HashMap { public MyMap() { super(); System.out.println("build MyMap"); } } public class SimpleTester { public static void main(String[] args) { Map m = new MyMap() {{ System.out.println("init values"); put("key1", "val1"); put("key2", "val2"); put("key3", "val3"); System.out.println("end init values"); }}; } }Matthieu
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 build MyMap init values end init values
Faudra qu'un modérateur m'explique le pourquoi du délestage sur ce thread.
C'est pas tous les threads que je trouve interressant, et celui là expose justement un TIP interressant, il me semble...
Matthieu
Salut,
En fait ce n'est pas tout à fait vrai !Envoyé par McFoggy
Les blocs globaux comme ceux-ci sont appellé avant le constructeur de la classe, mais après celui de la classe parente : c'est pourquoi ton résultat est faussé. En effet tu ne peux pas modifié le constructeur des classes anonymes, et il se contente d'appeller le constructeur parent.
Avec les classes suivantes :
On s'apercoit lorsqu'on instancie un objet B que le code des blocs globaux est bien exécuté avant le code du constructeur de la classe, mais après le code du constructeur de la classe parente :
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 class A { { System.out.println("Bloc global de A"); } public A() { System.out.println("Constructeur de A"); } } class B extends A { { System.out.println("Bloc global de B"); } public B() { super(); // implicite si absent System.out.println("Constructeur de B"); } }
Mais cela ne gène en rien dans ce cas puisque les appels aux méthode put() sont bien effectué après que la HashMap soient correctement initialisé...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Bloc global de A Constructeur de A Bloc global de B Constructeur de B
L'auteur du thread a également la possibilité de mettre son sujet en [Delestage], et il semblerait qu'il ai préféré le bouton delestage au bouton résolu... mais je peux corriger celaEnvoyé par McFoggy
a++
Partager