ジェネリックパラメータを持つジェネリックメソッドを取得しようとしていましたが、動作させることができません。ここで宣言は次のとおりです。ここでジェネリックメソッド宣言とジェネリックパラメータ
/**
* Set items as table rows content
*
* @param rows - table row content
*/
public abstract void setItems(List<?> rows);
は実装です:
@Override
public void setItems(List<Dto> bonuses) {
//code here
}
Dto
は、実際のクラスですが、コンパイラは、ISは親を見ていないことを言います。
型表のメソッドsetItems(リスト)が上書きまたは 私はジェネリック宣言で、別のパラメータとしてそれを定義していた場合は、スーパータイプのメソッド
を実装する必要があり、その後、コンパイラは私の新しいタイプの皮と言います既に定義されているクラス
この実装では、具体的なパラメータが必要であることをコンパイラに伝えることはできません。 ワイルドカードではなく型に変更しようとしましたが、同じ結果が得られます。これを具体的な実装(Dto
)で動作させるにはどうすればよいですか?
基本クラスのインタフェースが役に立たない場合は、それを変更したくない具体的な理由はありますか?基本クラス/インタフェースに型パラメータ "T"を入れるなどの方法があります。後でTがDtoだと言う? – GhostCat
'Dto'が基本クラスであれば' public abstract void setItems(List <?extends Dto> rows); 'オーバーライドされたメソッドも同じように見えるようにメソッドを変更することもできます。 –
Listのタイプ(リストまたはList )が実装され、それらが同じ親/基底クラスを持たないことがわかりません –
Sarief