Bonjour,
Une petite question... J'utilise une liste paramétrée en Java5 ce qui renforce pas mal mon code.
Je voudrais cependant en plus interdire l'insertion de valeur nulle dans ma liste. Comment faire ?
Merci !
Anthony
Bonjour,
Une petite question... J'utilise une liste paramétrée en Java5 ce qui renforce pas mal mon code.
Je voudrais cependant en plus interdire l'insertion de valeur nulle dans ma liste. Comment faire ?
Merci !
Anthony
Bonjour, si c'est une classe que tu as fait toi-même, tu dois avoir une méthode ajouter dans laquelle tu peux tester la valeur.
Si c'est une arrayList, il faut tester la valeur avant d'appeler la méthode add.
Oui je peux toujours écrire ma propre implémentation de List, mais je voulais savoir si ça n'existait pas déjà étant donné que ça fait plusieurs fois que je rencontre ce problème...
Anthony
Salut,
Sinon :
Code : Sélectionner tout - Visualiser dans une fenêtre à part List<String> list = Collections.checkedList(new ArrayList<String>(), String.class);Tout ajout d'une valeur null (ou incorrect) provoquera une exception.
a++
Coucou,
Merci pour la proposition mais j'avais déjà regarder de ce côté... En effet, le contrat de cette méthode ne garantit pas que "null" est interdit dans la liste.
D'ailleurs, cet exemple fonctionne :
La sortie sera :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 List<String> maListe = Collections.checkedList(new ArrayList<String>(), String.class); List<String> listWithNull = new ArrayList<String>(); listWithNull.add("toto"); listWithNull.add(null); maListe.add(0, "titi"); maListe.addAll(listWithNull); for (String crtStr : maListe) { System.out.println(crtStr); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3titi toto null
Si tu as la curiosité de regarder la classe Collection, tu verra que ça n'est pas si compliqué d'imiter le raisonnement :
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50 import java.util.Collection; import java.util.Iterator; import java.util.List; import java.util.ListIterator; public class NonNullList<T> implements List<T> { private List<T> list; public NonNullList(List<T> list) { this.list = list; } @Override public boolean add(T e) { if (e == null) throw new NullPointerException(); return list.add(e); } @Override public void add(int index, T element) { if (element == null) throw new NullPointerException(); list.add(index, element); } @Override public boolean addAll(Collection<? extends T> c) { if (c.contains(null)) throw new NullPointerException(); return list.addAll(c); } @Override public boolean addAll(int index, Collection<? extends T> c) { if (c.contains(null)) throw new NullPointerException(); return list.addAll(index, c); } @Override public T set(int index, T element) { if (element == null) throw new NullPointerException(); return list.set(index, element); } //... }
Merci Grimly, c'est gentil de ta part... mais je ne posais pas la question pour qu'on m'écrive le code mais plutôt pour savoir s'il était possible de le faire en "standard" avec le JDK ou un projet comme Apache Commons.
Si ce n'est pas le cas, je devrais pouvoir écrire la classe sans trop de problème...
Anthony
Partager