0

我不想在名为“dataItem”的超类中进行方法声明,以便实现该方法的所有子类都必须具有属于该实现类的返回类型。那可能吗?

例如,如果我有实现 'dataItem' 的类 'Experiment' 并且我有方法 newItem() 。对于“实验”,哪个应该只能返回“实验”数据类型,而不能返回“数据项”的任何其他实现。

4

2 回答 2

1

您不能强制类方法返回它所属的类型。您必须实际指定它。

public class DataItem {
    public DataItem getItem() {return null;}
}

public class Experiment extends DataItem {
    @Override
    public Experiment getItem() {return null;}
}

这是有效的,因为Experiment它是的子类,DataItem因此可以在任何可以使用的地方DataItem使用。

于 2013-10-10T20:45:59.793 回答
1

我想你正在寻找这个:

public interface dataitem<T>
{
    public T newItem();
};

public class Element implements dataitem<Element>
{
    @Override
    public Element newItem()
    {
        return new Element();
    }
}
于 2013-10-10T20:46:24.040 回答