遵循Java代码行意味着什么

我发现这个类在玉兰CMS源中使用了我不熟悉的类定义。任何知道如何使用以下代码样式的人都可以向我解释这究竟是什么吗? 在此代码示例中,
RenderingModel
RenderableDefinition
都是接口。我知道我们不能在一个类中实现两个接口,但是这里通过其他方式实现。有人可以向我解释以下行中使用的技术,特别是:
public class RenderingModelImpl < RD extends RenderableDefinition >  
    implements RenderingModel {
以下是您可以在magnolia java docs中找到的完整课程
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;
    }

}
    
已邀请:
这是Java泛型。 RD被称为“类型参数”。 “RD extends RenderingDefinition”部分意味着您可以使用RenderingDefinition的子类创建任何类参数化的RenderingModelingImpl实例。 假设您有扩展RenderingDefinition的类Foo,您将能够进行此调用... new RenderingModelImpl&lt; Foo>(...) 这将导致指定为返回RD的RenderingModelImpl实例上的任何方法都将返回Foo。 对于许多更简单的泛型示例,请参阅Java 5或更新版本中的Java集合(List,Set,Map等)。 关于无法实现两个接口,您也是不正确的。 Java类可以实现任意数量的接口。它只是子类,仅限于一个基类。     
定义泛型类型以获取方法或构造函数的参数,但此泛型类型必须从RenderableDefinition扩展或必须是实现RenderableDefinition。因此,当您使用ѭ4创建时,AnyClass必须从RenderableDefinition扩展,其他类型将不被接受。     

要回复问题请先登录注册