Je développe une API avec de nombreuses méthodes nommées de manière identique qui ne diffèrent que par leur signature, ce qui est assez courant. Elles font toutes la même chose, sauf qu'elles initialisent différentes valeurs par défaut si l'utilisateur ne souhaite pas les spécifier. Pour donner un exemple concret, considérez
public interface Forest
{
public Tree addTree();
public Tree addTree(int amountOfLeaves);
public Tree addTree(int amountOfLeaves, Fruit fruitType);
public Tree addTree(int amountOfLeaves, int height);
public Tree addTree(int amountOfLeaves, Fruit fruitType, int height);
}
L'action essentielle effectuée par toutes ces méthodes est la même : un arbre est planté dans la forêt. De nombreuses informations importantes que les utilisateurs de mon API doivent connaître sur l'ajout d'arbres sont valables pour toutes ces méthodes.
Idéalement, j'aimerais écrire un bloc Javadoc unique utilisé par toutes les méthodes :
/**
* Plante un nouvel arbre dans la forêt. Veuillez noter qu'il peut
* falloir jusqu'à 30 ans pour que l'arbre atteigne sa pleine croissance.
*
* @param amountOfLeaves nombre souhaité de feuilles. Le nombre réel de
* feuilles à maturité peut varier jusqu'à 10%.
* @param fruitType le type de fruit désiré à cultiver. Aucune garantie
* n'est donnée quant à la saveur.
* @param height hauteur souhaitée en centimètres. La hauteur réelle peut
* varier jusqu'à 15%.
*/
Dans mon imagination, un outil pourrait magiquement choisir quels @params s'appliquent à chacune des méthodes, et donc générer de bons docs pour toutes les méthodes en une seule fois.
Avec Javadoc, si je comprends bien, tout ce que je peux faire est essentiellement de copier-coller le même bloc javadoc cinq fois, avec seulement une liste de paramètres légèrement différente pour chaque méthode. Cela me semble fastidieux, et c'est aussi difficile à maintenir.
Y a-t-il un moyen de contourner cela ? Une extension de Javadoc qui offre ce type de support ? Ou y a-t-il une bonne raison pour laquelle cela n'est pas pris en charge que j'aurais manquée ?