そのメソッドを実装するすべてのサブクラスがその実装クラスの戻り値の型を持つ必要があるように、「dataItem」と呼ばれるスーパークラスでメソッド宣言を作成したくありません。それは可能ですか?
たとえば、「dataItem」を実装するクラス「Experiment」があり、メソッド newItem() があるとします。「実験」の場合、「実験」データ型のみを返すことができ、「dataItem」の他の実装を返すことはできません。
そのメソッドを実装するすべてのサブクラスがその実装クラスの戻り値の型を持つ必要があるように、「dataItem」と呼ばれるスーパークラスでメソッド宣言を作成したくありません。それは可能ですか?
たとえば、「dataItem」を実装するクラス「Experiment」があり、メソッド newItem() があるとします。「実験」の場合、「実験」データ型のみを返すことができ、「dataItem」の他の実装を返すことはできません。
クラスメソッドがメンバーである型を返すように強制することはできません。実際に指定する必要があります。
public class DataItem {
public DataItem getItem() {return null;}
}
public class Experiment extends DataItem {
@Override
public Experiment getItem() {return null;}
}
これExperiment
は のサブクラスであるため機能しDataItem
、 a を使用できる場所ならどこでも使用DataItem
できます。
私はあなたがこれを探していると思います:
public interface dataitem<T>
{
public T newItem();
};
public class Element implements dataitem<Element>
{
@Override
public Element newItem()
{
return new Element();
}
}