나는 추상 메소드를 가지고 추상 클래스를 만들려고하는데, 이는 어떤 타입의리스트라도 SuperBean
을 확장하는 아이템으로 반환 할 수 있어야한다.추상 수퍼 클래스에서 일반 목록을 정의하는 방법은 무엇입니까?
나중에 목록에 항목을 추가 할 수있는 제네릭 클래스를 만들고 싶습니다. 예 :
class AbstractService<T extends SuperBean> {
//this is what I'm aiming for
void add(T item) {
// "is not applicable for the arguments (T)"
superBean.getSublist().add(item);
}
}
abstract class SuperBean {
abstract List<? extends SuperBean> getSublist();
}
class MyBean1 extends SuperBean {
List<MyBean2> sublist;
List<MyBean2> getSublist() {
return sublist;
}
}
class MyBean2 extends SuperBean {
List<MyBean3> sublist;
List<MyBean3> getSublist() {
return sublist;
}
}
질문 : 내가 SuperBean
의 구현이 어떤 T item
를 추가 할 수 있도록 abstract getSublist()
클래스를 정의 할 필요가에 방법?
필드를'List'으로 정의하는 문제는 무엇입니까? 당신이'MyBean2 mb2 = aSuperBean.getItem();'과'MyBean3 mb3 = aSuperBean.getItem();'을 얻고 자하는 것처럼 보입니다. –
아니요 하위 목록에 대해 'MyBean2'와 같은 특정 클래스 유형이 필요합니다. – membersound
이것이 무엇인지 겨냥하고 있는지는 잘 모르겠지만 다음과 같이해볼 수 있습니다 :'public abstract class GenericList ArrayList를 확장합니다 ' –