Peut-on tester qu'une classe soit immuable ou non, SVP ?
genre : assert Collections.isImmutable(productsList) : "la liste des
produits n'est pas prot=E9g=E9e";
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Emmanuel Bourg
ToOmS a écrit :
Bonjour,
Peut-on tester qu'une classe soit immuable ou non, SVP ? genre : assert Collections.isImmutable(productsList) : "la liste des produits n'est pas protégée";
Merci d'avance !
Dans le cas d'une collection tu peux essayer d'y ajouter des éléments et de voir si une UnsupportedOperationException est lancée. Par exemple :
public boolean isModifiable(Collection c) { try { c.addAll(Collections.EMPTY_LIST); return true; } catch (UnsupportedOperationException e) { return false; } }
ToOmS a écrit :
Bonjour,
Peut-on tester qu'une classe soit immuable ou non, SVP ?
genre : assert Collections.isImmutable(productsList) : "la liste des
produits n'est pas protégée";
Merci d'avance !
Dans le cas d'une collection tu peux essayer d'y ajouter des éléments et
de voir si une UnsupportedOperationException est lancée. Par exemple :
public boolean isModifiable(Collection c) {
try {
c.addAll(Collections.EMPTY_LIST);
return true;
} catch (UnsupportedOperationException e) {
return false;
}
}
Peut-on tester qu'une classe soit immuable ou non, SVP ? genre : assert Collections.isImmutable(productsList) : "la liste des produits n'est pas protégée";
Merci d'avance !
Dans le cas d'une collection tu peux essayer d'y ajouter des éléments et de voir si une UnsupportedOperationException est lancée. Par exemple :
public boolean isModifiable(Collection c) { try { c.addAll(Collections.EMPTY_LIST); return true; } catch (UnsupportedOperationException e) { return false; } }
acebanenco
On 16 août, 20:43, Emmanuel Bourg wrote:
ToOmS a écrit :
> Bonjour,
> Peut-on tester qu'une classe soit immuable ou non, SVP ? > genre : assert Collections.isImmutable(productsList) : "la liste des > produits n'est pas protégée";
> Merci d'avance !
Dans le cas d'une collection tu peux essayer d'y ajouter des éléments et de voir si une UnsupportedOperationException est lancée. Par exemple :
public boolean isModifiable(Collection c) { try { c.addAll(Collections.EMPTY_LIST); return true; } catch (UnsupportedOperationException e) { return false; }
}
Vérifiez également Arrays.asList cas (ils ne pouvaient pas grandir, mais ne sont pas immuables!).
D'ailleurs, en ajoutant une liste vide n'est pas une proove que les collections est immuable: il pourrait ne pas lancer une exception dans tous les cas depuis la 2ème liste est vide. Vous pouvez essayer de cloner que la collecte et d'effectuer toutes les actions que vous voulez sur le clone. Vous pouvez vérifier "remove", "set" et "add" les méthodes contre de collecte cloné. Pouvez-vous fournir plus de détails sur la collecte du cycle de vie après cette vérification pour immutabilité, sil vous plaît? Qu'e st-ce que vous allez faire avec mutable collections et ce avec immuable?
On 16 août, 20:43, Emmanuel Bourg <ebo...@apache.org> wrote:
ToOmS a écrit :
> Bonjour,
> Peut-on tester qu'une classe soit immuable ou non, SVP ?
> genre : assert Collections.isImmutable(productsList) : "la liste des
> produits n'est pas protégée";
> Merci d'avance !
Dans le cas d'une collection tu peux essayer d'y ajouter des éléments et
de voir si une UnsupportedOperationException est lancée. Par exemple :
public boolean isModifiable(Collection c) {
try {
c.addAll(Collections.EMPTY_LIST);
return true;
} catch (UnsupportedOperationException e) {
return false;
}
}
Vérifiez également Arrays.asList cas (ils ne pouvaient pas grandir,
mais ne sont pas immuables!).
D'ailleurs, en ajoutant une liste vide n'est pas une proove que les
collections est immuable: il pourrait ne pas lancer une exception dans
tous les cas depuis la 2ème liste est vide.
Vous pouvez essayer de cloner que la collecte et d'effectuer toutes
les actions que vous voulez sur le clone. Vous pouvez vérifier
"remove", "set" et "add" les méthodes contre de collecte cloné.
Pouvez-vous fournir plus de détails sur la collecte du cycle de vie
après cette vérification pour immutabilité, sil vous plaît? Qu'e st-ce
que vous allez faire avec mutable collections et ce avec immuable?
> Peut-on tester qu'une classe soit immuable ou non, SVP ? > genre : assert Collections.isImmutable(productsList) : "la liste des > produits n'est pas protégée";
> Merci d'avance !
Dans le cas d'une collection tu peux essayer d'y ajouter des éléments et de voir si une UnsupportedOperationException est lancée. Par exemple :
public boolean isModifiable(Collection c) { try { c.addAll(Collections.EMPTY_LIST); return true; } catch (UnsupportedOperationException e) { return false; }
}
Vérifiez également Arrays.asList cas (ils ne pouvaient pas grandir, mais ne sont pas immuables!).
D'ailleurs, en ajoutant une liste vide n'est pas une proove que les collections est immuable: il pourrait ne pas lancer une exception dans tous les cas depuis la 2ème liste est vide. Vous pouvez essayer de cloner que la collecte et d'effectuer toutes les actions que vous voulez sur le clone. Vous pouvez vérifier "remove", "set" et "add" les méthodes contre de collecte cloné. Pouvez-vous fournir plus de détails sur la collecte du cycle de vie après cette vérification pour immutabilité, sil vous plaît? Qu'e st-ce que vous allez faire avec mutable collections et ce avec immuable?
Emmanuel Bourg
acebanenco a écrit :
D'ailleurs, en ajoutant une liste vide n'est pas une proove que les collections est immuable: il pourrait ne pas lancer une exception dans tous les cas depuis la 2ème liste est vide.
Les collections non modifiables créées par java.util.Collections.unmodifiableCollection(), unmodifiableList(), unmodifiableMap(), unmodifiableSet() et celles provenant de Commons Collections lancent toutes une UnsupportedOperationException en cas de modification, je pense que le test est suffisant.
acebanenco a écrit :
D'ailleurs, en ajoutant une liste vide n'est pas une proove que les
collections est immuable: il pourrait ne pas lancer une exception dans
tous les cas depuis la 2ème liste est vide.
Les collections non modifiables créées par
java.util.Collections.unmodifiableCollection(), unmodifiableList(),
unmodifiableMap(), unmodifiableSet() et celles provenant de Commons
Collections lancent toutes une UnsupportedOperationException en cas de
modification, je pense que le test est suffisant.
D'ailleurs, en ajoutant une liste vide n'est pas une proove que les collections est immuable: il pourrait ne pas lancer une exception dans tous les cas depuis la 2ème liste est vide.
Les collections non modifiables créées par java.util.Collections.unmodifiableCollection(), unmodifiableList(), unmodifiableMap(), unmodifiableSet() et celles provenant de Commons Collections lancent toutes une UnsupportedOperationException en cas de modification, je pense que le test est suffisant.
acebanenco
On 18 août, 11:00, Emmanuel Bourg wrote:
Les collections non modifiables créées par java.util.Collections.unmodifiableCollection(), unmodifiableList(), unmodifiableMap(), unmodifiableSet() et celles provenant de Commons Collections lancent toutes une UnsupportedOperationException en cas de modification, je pense que le test est suffisant.
Et qu'en est-il de Collections.singleton et Collections.singletonList? Ces deux méthodes retourne immuables collections, mais aucun des faux collecte lance addAll exception de méthode lors de l'ajout d'une collection vide ...
On 18 août, 11:00, Emmanuel Bourg <ebo...@apache.org> wrote:
Les collections non modifiables créées par
java.util.Collections.unmodifiableCollection(), unmodifiableList(),
unmodifiableMap(), unmodifiableSet() et celles provenant de Commons
Collections lancent toutes une UnsupportedOperationException en cas de
modification, je pense que le test est suffisant.
Et qu'en est-il de Collections.singleton et Collections.singletonList?
Ces deux méthodes retourne immuables collections, mais aucun des faux
collecte lance addAll exception de méthode lors de l'ajout d'une
collection vide ...
Les collections non modifiables créées par java.util.Collections.unmodifiableCollection(), unmodifiableList(), unmodifiableMap(), unmodifiableSet() et celles provenant de Commons Collections lancent toutes une UnsupportedOperationException en cas de modification, je pense que le test est suffisant.
Et qu'en est-il de Collections.singleton et Collections.singletonList? Ces deux méthodes retourne immuables collections, mais aucun des faux collecte lance addAll exception de méthode lors de l'ajout d'une collection vide ...
Emmanuel Bourg
acebanenco a écrit :
Et qu'en est-il de Collections.singleton et Collections.singletonList? Ces deux méthodes retourne immuables collections, mais aucun des faux collecte lance addAll exception de méthode lors de l'ajout d'une collection vide ...
Effectivement ça ne marche pas dans ce cas.
acebanenco a écrit :
Et qu'en est-il de Collections.singleton et Collections.singletonList?
Ces deux méthodes retourne immuables collections, mais aucun des faux
collecte lance addAll exception de méthode lors de l'ajout d'une
collection vide ...
Et qu'en est-il de Collections.singleton et Collections.singletonList? Ces deux méthodes retourne immuables collections, mais aucun des faux collecte lance addAll exception de méthode lors de l'ajout d'une collection vide ...