Il y a un terme pour ça, pour que ça ait l'air spécial. La réalité est loin d'être aussi mystérieuse.
En gros, un "haricot" :
- est un objet sérialisable (c'est-à-dire qu'il met en œuvre l'option
java.io.Serializable
et le fait correctement), que
- possède des "propriétés" dont les récupérateurs et les régleurs sont simplement des méthodes portant certains noms (comme, par exemple,
getFoo()
est le getter pour la propriété "Foo"), et
- possède un constructeur public à zéro argument (il peut donc être créé à volonté et configuré en définissant ses propriétés).
Quant à Serializable
: Ce n'est rien d'autre qu'une "interface de marquage" (une interface qui ne déclare aucune fonction) qui indique à Java que la classe qui la met en œuvre consent à (et implique qu'elle est capable de) la "sérialisation" -- un processus qui convertit une instance en un flux d'octets. Ces octets peuvent être stockés dans des fichiers, envoyés sur une connexion réseau, etc., et contiennent suffisamment d'informations pour permettre à une JVM (du moins, une JVM qui connaît le type de l'objet) de reconstruire l'objet ultérieurement, éventuellement dans une autre instance de l'application, voire sur une toute autre machine !
Bien sûr, pour ce faire, la classe doit respecter certaines limites. La principale d'entre elles est que tous les champs d'instance doivent être soit des types primitifs (int, bool, etc.), soit des instances d'une classe qui est également sérialisable, soit marqués en tant que transient
afin que Java n'essaie pas de les inclure. (Cela signifie bien sûr que transient
Les champs ne survivront pas au voyage sur un ruisseau. Une classe qui a transient
les champs doivent être prêts à les réinitialiser si nécessaire).
Une classe qui ne peut pas respecter ces limites ne devrait pas implémenter Serializable
(et, IIRC, le compilateur Java ne va même pas let qu'il le fasse).
26 votes
Voir les endroits où Java Beans est utilisé ? . C'est une classe qui suit certaines conventions.
13 votes
Dans un souci d'exhaustivité, voici un lien vers le site Web de la Commission européenne. Spécification des JavaBeans .
7 votes
Juste une note. Si vous entendez des gens utiliser le terme POJO, ils veulent souvent dire Bean. Lorsque vous voyez des POJO, ils ont presque toujours des setters et getters, sont sérialisables, En réalité, un POJO n'a pas besoin de setters et getters, d'une interface sérialisable ou quoi que ce soit d'autre - c'est simplement un Plain Old Java Object sans exigences spécifiques.
1 votes
Ce n'est certainement pas une structure, mais je suis content que vous ayez posé la question.