Created
June 29, 2011 11:40
-
-
Save Riduidel/1053691 to your computer and use it in GitHub Desktop.
Un bean tout simple
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| public class Bean { | |
| /** | |
| * Avec le PropertyChangeSupport, vous n'avez aps besoin d'envoyer vous-même les événements, | |
| * il s'en occupe (et il le fait mieux que vous, croyez-moi) | |
| */ | |
| private PropertyChangeSupport support = new PropertyChangeSupport(this); | |
| /** | |
| * Notre champ name ne change pas d'un iota | |
| */ | |
| private String name; | |
| /** | |
| * Les PropertyChangeEvent portent le nom de l'attribut qui a changé. | |
| * Pour éviter la multiplication des chaînes, l'usage veut qu'on définisse une constante | |
| * pour chaque propriété qui envoie un événement | |
| */ | |
| public static final String NAME = "name"; | |
| /** | |
| * Le getter ne change pas d'un pouce | |
| */ | |
| public String getName() { return name; } | |
| /** | |
| * Le setter change pas mal, puisque, pour éviter les boucles d'événements qui arrivent | |
| * facilement, on vérifie que la nouvelle valeur est différente de l'ancienne | |
| * @param name nouvelle valeur. Si elle est différente, un événement sera envoyé | |
| */ | |
| public void setName(String newName) { | |
| // La, par contre, il y a des subtilités | |
| if( | |
| // si this.name est null, une valeur différente est une valeur non null | |
| (this.name==null && newName!=null) || | |
| // par contre, si this.name est non null, on peut appeler ses méthodes sans craindre | |
| // le NullPointerException pour vérifier que la nouvele valeur est différente | |
| (this.name!=null && !this.name.equals(newName)) | |
| ) { | |
| String oldName = this.name; | |
| this.name = newName; | |
| support.firePropertyChange(NAME, oldName, newName); | |
| } | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment