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