몇 가지 공통 논리를 수행해야하는 추상 슈퍼 서비스가 있습니다. 여러 서비스가이 슈퍼 서비스를 구현합니다. 나는 조건에 기반하여 ServiceImpl을 선택했고, 나중에 공통 논리를 실행하기 위해 그것을 추상 유형에 할당하려고한다.형식 매개 변수를 사용하는 일반 메서드를 만드는 방법은 무엇입니까?
다음과 같은 문제점이 있습니까? 예 : FirstResponse
과 같이 BaseResponse
의/extends 오브젝트를 process()
메소드로 전달하고 싶습니다.
//superservice
abstract class AbstractService<T extends BaseResponse> {
public void process(T t) {
//execute logic that is common to a BaseResponse
}
}
//implementations
class FirstService extends AbstractService<FirstResponse extends BaseResponse> {
}
//usage
AbstractService<? extends BaseResponse> myservice = new FirstService(); //chose by condition
myservice.process(new FirstResponse()); //ERROR
결과 :
The method build(capture#2-of ? extends BaseResponse)
in the type AbstractService<capture#2-of ? extends BaseResponse> is not applicable for the arguments (FirstResponse)
합니까'FirstService' 일하는' BaseResponse' 또는'BaseResponse'의 서브 클래스이거나 특정 서브 클래스입니까? – Bohemian
'AbstractService 슈퍼 BaseResponse> myservice = new FirstService()'트릭을 그렇게해야합니까? –
'FirstService'는'BaseResponse'와 함께 작동합니다; '? super'는'myservice.process()'를 호출 할 수있게 만들지 만, 더 이상 'FirstService'를 할당 할 수 없습니다 ... – membersound