このクラスは、私がまだよく知らないクラス定義を使用するマグノリアCMSソースで見つかりました。次のコードスタイルの使用法についての知識を持っている人は、これが正確に何をするのかを私に説明できますか?
このコードサンプルRenderingModel
でRenderableDefinition
は、両方ともインターフェイスです。私が知っているように、1つのクラスに2つのインターフェースを実装することはできませんが、ここでは他の方法でこれを実現しています。特に次の行で使用されている手法について誰かに説明してもらえますか。
public class RenderingModelImpl < RD extends RenderableDefinition >
implements RenderingModel {
以下は、 magnoliajavadocsで見つけることができる完全なクラスです。
public class RenderingModelImpl < RD
extends RenderableDefinition >
implements RenderingModel {
protected final RenderingModel parentModel;
protected final Content content;
protected final RD definition;
public RenderingModelImpl(Content content, RD definition, RenderingModel
parent) {
this.content = content;
this.definition = definition;
this.parentModel = parent;
}
public RenderingModel getParent() {
return this.parentModel;
}
public RenderingModel getRoot(){
RenderingModel model = this;
while(model.getParent() != null){
model = model.getParent();
}
return model;
}
public Content getContent() {
return this.content;
}
/**
* Shortname for templates: model.def.
*/
public RD getDef() {
return getDefinition();
}
public RD getDefinition() {
return this.definition;
}
public String execute() {
return null;
}
}