Ich entwickle eine API mit vielen identisch benannten Methoden, die sich nur durch die Signatur unterscheiden, was meiner Meinung nach ziemlich häufig ist. Sie alle machen dasselbe, außer dass sie verschiedene Werte standardmäßig initialisieren, wenn der Benutzer dies nicht angeben möchte. Betrachten Sie als verdauliches Beispiel
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);
}
Die wesentliche Aktion, die von all diesen Methoden ausgeführt wird, ist dieselbe. Im Wald wird ein Baum gepflanzt. Viele wichtige Dinge, die Benutzer meiner API über das Hinzufügen von Bäumen wissen müssen, halten für all diese Methoden.
Idealerweise möchte ich einen Javadoc-Block schreiben, der von allen Methoden verwendet wird:
/**
* Plants a new tree in the forest. Please note that it may take
* up to 30 years for the tree to be fully grown.
*
* @param amountOfLeaves desired amount of leaves. Actual amount of
* leaves at maturity may differ by up to 10%.
* @param fruitType the desired type of fruit to be grown. No warranties
* are given with respect to flavour.
* @param height desired hight in centimeters. Actual hight may differ by
* up to 15%.
*/
In meiner Vorstellung könnte ein Tool auf magische Weise auswählen, welche der @ -Params für jede der Methoden gelten, und so gute Dokumente für alle Methoden gleichzeitig generieren.
Wenn ich es mit Javadoc richtig verstehe, kann ich im Wesentlichen nur fünf Mal denselben Javadoc-Block kopieren und einfügen, wobei für jede Methode nur eine geringfügig abweichende Parameterliste vorhanden ist. Das klingt für mich umständlich und ist auch schwer zu pflegen.
Gibt es einen Weg daran vorbei? Eine Erweiterung auf Javadoc, die diese Art von Unterstützung hat? Oder gibt es einen guten Grund, warum dies nicht unterstützt wird, den ich verpasst habe?