public interface ISomething
/**
* This method does something!
*/
public void something();
}
public abstract class AbstractSomething implements ISomething
{
/**
* See {@link #doSomething()}
*/
public final void something()
{
doSomething();
// Do something else...
...
}
protected abstract void doSomething();
}
public class ConcreteSomething extends AbstractSomething
{
/**
* Concrete implementation of doSomething(). It does... something!
*/
@Override
protected void doSomething()
{
// Actually do something...
...
}
}
所以我有一個類層次結構,看起來像這樣。這個想法是使用public final()方法,然後抽象doSomething()模式,以便擴展類有義務調用super()方法。 Andrzej answer's以抽象方法寫javadoc的正確方法是什麼
然後,我最終會有幾個擴展AbstractSomething的實現。這段代碼的客戶端將會實例化這些實現並使用ISomething方法。
事情是這樣的:
public class Main
{
public static void main(String[] args)
{
ConcreteSomething concrete = new ConcreteSomething();
concrete.something();
}
}
所以現在的問題是,採用這種設計成語是那裏寫的層次結構良好的javadoc以正確的方式?
正確的意思是: 當客戶端調用concrete.something()時,我希望他們看到ConcreteSomething#something()javadoc。由於該方法是最終的,但是,我不能簡單地覆蓋它並編寫具體的javadoc。 另外,我的客戶不會看到doSomething()方法,因爲它受到保護,所以我不能將具體的javadoc放在那裏。
因此,換句話說,我可能需要對面{} @InheritDoc :)
任何建議嗎?