다른 게시물 (How to implement a method from a derived class that does not require cast)에서 비슷한 질문을했지만 좀 더 구체적입니다. 차량, 자동차, 컨버터블의 3 가지 클래스가 있다고 가정합니다. 자동차는 차량을 확장하고 컨버터블은 자동차를 확장합니다. 런타임시 캐스트가 필요없는 목록을 반환하는 각 클래스에 대한 메서드를 원합니다. 나는 몇 가지 생각 후 불가능 할 생각하지만, 나는 또한 당신의 의견을 나는이 목록에 요소의 특정 유형을 반환 (List<Convertible>
)을했을 캐스트를 사용하지하기 위해자바의 다중 상속 및 메서드 재정의 문제
public class Vehicle {
public List<? extends Vehicle> getList() {
return new ArrayList<Vehicle>();
}
}
public class Car extends Vehicle {
@Override
public List<? extends Car> getList() {
return new ArrayList<Car>();
}
}
public class Convertible extends Car {
@Override
public List<? extends Convertible> getList() {
return new ArrayList<Convertible>();
}
}
하지만 만약을 듣고 싶어 나는 더 이상 그것을 할 수 없었던 컨버터블 수업을 연장하고 싶었다.
이 상황에서 어떤 방법이 있습니까? 당신이
List<Vehicle> list1 = new Vehicle().getList();
List<Car> list2 = new Car().getList();
List<Convertible> list3 = new Convertible().getList();
당신이 운이 있습니다를 쓸 수있게하려면
'Vehicle'가 제네릭 형식 인수를 받아들이도록 강요 한 다음 그 인수를 목록 형식으로 사용 할 수 없습니까? –
전송해야합니까? 그냥'List '를 사용할 수 없습니까? 반환 값을 저장하는 변수의 형식으로 Convertible>을 확장합니다. – aioobe