繁体   English   中英

Java抽象类/接口并指定类型参数

[英]Java abstract classes/interfaces and specifying type parameters

现在,我正在实现Tree<T><T>指的是根节点的数据值)抽象类,目前有这样的东西:

public abstract class Tree<T> {
    public void setChild(int index, ??? childTree);
    public void deleteChild(int index, ??? childTree);
    public T getData();
    public void setData(T value);
}

如您所见,我在确定子树的正确类型时遇到了麻烦。 理想情况下,我会做这样的事情

public abstract class Tree<T> {
    public void setChild(int index, ImplementingClass childTree);
    public void deleteChild(int index, ImplementingClass childTree);
    ...
}  

但我不确定如何执行此操作(可能要重新阅读文档)。 我心目中的当前解决方案是这样的

public abstract class Tree<T, C extends Tree> {
    public void setChild(int index, C childTree);
    public void deleteChild(int index, C childTree);
    ...
}

但是,更正确的解决方案是指定子树必须与当前树属于同一类。 有没有一种方法可以在Java中指定?

Tree<T>

将包含类型T的对象

Tree<String> tree;

T可能是另一个通用类型描述

Tree<Tree<String>>

然后您从中添加或删除T对象

Public void setChild(int index, T child);
public void deleteChild(int index, T child);

如果要指定T为更严格的类型

<T extends class>
<T implements interface>
<T super class>

在第一个示例中,如果没有方法实现,则将抽象类更改为接口。

请记住,一个类只能彼此继承,但可以实现多个接口

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM