我正在开发一个带有许多同名方法的API,这些方法因签名而异,我猜这是相当常见的.它们都做同样的事情,除非他们默认初始化各种值,如果用户不想指定.作为一个易于理解的例子,请考虑
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);
}
Run Code Online (Sandbox Code Playgroud)
所有这些方法所采取的基本行动是相同的; 在森林里种了一棵树.我的API用户需要了解的有关添加树的许多重要信息都适用于所有这些方法.
理想情况下,我想编写一个由所有方法使用的Javadoc块:
/**
* 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 …Run Code Online (Sandbox Code Playgroud) 我有两个Java函数:
/**
* Do something with param
*/
public String doSomething(String param) {...};
/**
* ...
*/
public String doSomething(Integer param) {...};
Run Code Online (Sandbox Code Playgroud)
如何使第二个函数的描述显示第一个函数的精确副本?
假设我有一些方法的接口,如下所示:
interface Task {
void before();
void doStuff();
void after();
}
Run Code Online (Sandbox Code Playgroud)
在这里,我将实现其中的一部分:
abstract class PoliteTask implements Task{
@Override
public void before() {
System.out.println("Hey");
}
@Override
public abstract void doStuff();
@Override
public void after() {
System.out.println("Cya");
}
}
Run Code Online (Sandbox Code Playgroud)
现在我想确保在所有扩展类中调用这些before()和after()实现.
这里我们有一个需要初始化的类before():
class ActualStuffTask extends PoliteTask {
private int fancyNumber;
@Override
public void before() {
// init some things
fancyNumber = 42;
}
@Override
public void doStuff() {
System.out.println("Look, a number: "+fancyNumber);
}
}
Run Code Online (Sandbox Code Playgroud)
显然,ActualStuffTask覆盖 …