0

そのメソッドを実装するすべてのサブクラスがその実装クラスの戻り値の型を持つ必要があるように、「dataItem」と呼ばれるスーパークラスでメソッド宣言を作成したくありません。それは可能ですか?

たとえば、「dataItem」を実装するクラス「Experiment」があり、メソッド newItem() があるとします。「実験」の場合、「実験」データ型のみを返すことができ、「dataItem」の他の実装を返すことはできません。

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、 a を使用できる場所ならどこでも使用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 に答える