2009-06-16 4 views
4

J'ai passé en revue et programmé toute ma logique de niveau de domaine aux interfaces. Maintenant, je trouve que lorsque je veux mettre des données dans un bean, le bean ne fonctionne pas parce que les interfaces de collection (Collection, List, Set, etc) n'implémentent pas Serializable. Dois-je refactoriser tout mon code pour utiliser des types de béton ou y a-t-il un meilleur plan d'action ici?Pouvez-vous programmer des collections Java sur une interface et utiliser Serializable?

Répondre

5

Si votre classe implémente Serializable et que tous ses membres sont sérialisables, l'objet peut être sérialisé correctement. Exemple:

public class Person implements Serializable { 
    private String name; 
    private Collection<Integer> luckyNumbers = new ArrayList<Integer>(); 
} 

Tant que par exemple l » luckyNumbers est sérialisable (comme ArrayList), et ses membres sont sérialisable (dans ce cas Integer s), l'objet sérialisera.

+0

Mes instances sont sérialisables, je crois. Est-ce vrai pour Java 5 seulement? –

+0

Avez-vous une référence? Avez-vous testé cela? Si oui, je vais supprimer ma réponse. –

+0

Non, cela vaut également pour Java 1.4. Si votre collection est sérialisable, comme, par exemple, ArrayList, votre classe sera sérialisée correctement. – Jorn

0

Serializable est une interface "marqueur". Il ne convient pas d'utiliser un type de référence. Vivez avec un peu de frappe dynamique (bien qu'il n'y ait rien pour vous empêcher d'utiliser un vérificateur de type statique externe).

Vous pourriez sauter à travers les cerceaux avec des méthodes génériques paramétrées bizarres, mais ce serait extrêmement moche et les bibliothèques Java ne le font pas, donc vous seriez arrosé de toute façon.

Questions connexes