我不想在名为'dataItem'的超类中进行方法声明,以便实现该方法的所有子类必须具有实现类的返回类型。这可能吗?
例如,如果我有'实验'类实现'dataItem'并且我有方法newItem()。哪个“实验”应该只能返回'Experiment'数据类型,而不能返回'dataItem'的任何其他实现。
答案 0 :(得分:1)
您不能强制类方法返回它所属的类型。你必须实际指定它。
public class DataItem {
public DataItem getItem() {return null;}
}
public class Experiment extends DataItem {
@Override
public Experiment getItem() {return null;}
}
这是有效的,因为Experiment
是DataItem
的子类,因此可以在DataItem
可以使用的任何地方使用。
答案 1 :(得分:1)
我想你正在寻找这个:
public interface dataitem<T>
{
public T newItem();
};
public class Element implements dataitem<Element>
{
@Override
public Element newItem()
{
return new Element();
}
}