次のシナリオを理解するのに苦労しています。抽象クラスと抽象クラスを拡張する具象クラスによって実装される「汎用化された」インターフェイスがあります。
問題は、パラメータ化されたリストを返す抽象クラスのすべてのメソッドが型を失っているため、オブジェクトから元の List 型に変換できないというコンパイル エラーが発生することです。
誰でも洞察を提供できますか?
java.lang.object
最後に、またはの戻り値の型を持つ抽象クラスに getId および setId メソッドを設定し、戻り値の型を<T extends Object>
必要なものに実装する具象クラスを設定することをお勧めします。
これが私のさまざまなオブジェクトのコードです:
汎用インターフェース
public interface MyInterface<T>{
public T getId();
public void setId(T id);
}
インターフェイスを実装する抽象クラス
public abstract class MyAbstractClass<T> implements MyInterface<T>{
private List<String> texts;
private List<Integer> notes;
public List<String> getTexts(){
return texts;
}
public List<Integer> getNotes(){
return notes;
}
}
抽象クラスを実装する具象クラス
public class MyConcreteClass implements MyAbstractClass<Integer>{
private Integer id;
public Integer getId(){
return this.id;
}
public void setId(Integer id){
this.id = id;
}
}
他のクラス:
public class SomeOtherClass{
public void process(List<T extends MyAbstractClass> myClassList){
// Compilation error ->
// Type mismatch: cannot convert from element type Object to String
for(MyAbstractClass myObj : myClassList){
System.out.println("object Id : " + myObj.getId());
// Compilation error ->
// Type mismatch: cannot convert from element type Object to String
for(String txt : myObj.getTexts()){
}
}
}
}