Un JavaBean peut-il avoir des méthodes en plus des getters et setters?


Selon les définitions que je trouve sur Internet, un JavaBean est une classe Java qui remplit ces conditions:

  • Tous les attributs d'instance sont privés
  • Tous les attributs d'instance ont des getters et des setters publics
  • La classe a un constructeur sans paramètre
  • La classe implémente l'interface sérialisable

Ce que j'aimerais savoir, c'est que si j'ajoute une méthode à un Javabean, pouvons-nous toujours l'appeler un Javabean?

Par exemple peut-on dire que la classe suivante est un JavaBean?

public class Person implements Serializable {
    private String name;
    public Person(){}
    public String getName(){...}
    public void setName(String name){...}
    public void sayHello(){}
}
Author: Chedy2149, 2014-04-03

2 answers

Oui, les Beans Java peuvent certainement avoir un comportement. Les classes de Bean Java sans méthodes supplémentaires ont une applicabilité très limitée, car elles encapsulent des données dépourvues de comportement utile.

Oracle le mentionne dans l'un de leurs tutoriels sur les Beans Java:

Les méthodes d'un bean sont les choses qu'il peut faire. Une méthode publique qui ne fait pas partie d'une définition de propriété est une méthode d'haricot. Lorsque vous utilisez un haricot dans le contexte d'un générateur outil comme NetBeans, vous pouvez utiliser un bean méthodes dans le cadre de votre demande. Par exemple, vous pouvez câbler un bouton pour appeler l'une des méthodes de votre bean.

 7
Author: dasblinkenlight, 2014-04-03 15:53:06

Oui, les beans java peuvent avoir des fonctionnalités supplémentaires. La convention a été introduite pour accéder aux propriétés de manière structurée et ajouter des fonctionnalités telles que le veto. Il est utilisé par exemple pour les composants GUI dans swing, où le mécanisme bean est utilisé pour configurer les éléments GUI. Surtout dans les éditeurs GUI, il était nécessaire d'accéder dynamiquement aux propriétés inconnues. Et bien sûr, ces composants GUI ont beaucoup de fonctionnalités. Ce que vous obtenez si vous limitez à votre ensemble de conditions est un DTO (objet de transfert de données), qui ne transporte que des données, mais n'a pas de fonctions supplémentaires.

 2
Author: Drunix, 2017-03-17 07:32:58