2014-03-13 2 views
0

클래스를 오버라이드 (override) 할 수 있습니까 만, 오버라이드 (override) 된 메소드가 슈퍼 인터페이스가 아닌이 메소드로 직접 불려 갔을 경우에 제공 할 필요가있는 특정의 구현을 제공합니까?특정 구현 클래스의 메서드 재정의?

class BaseService implements BaseInferface { 

    //something like this? 
    @Override //implements the interface 
    void run(<? extends BaseDTO) dto) { 

    } 
} 

class CustomService extends BaseService { 
    //CustomDTO extends BaseDTO 
    @Override 
    void run(CustomDTO dto) { 

    } 
} 

내 목표는 다음과 같습니다

baseService.run(new BaseDTO()); //OK 
customService.run(new BaseDTO()); //NOK as I want to make the CustomDTO required 

답변

4

당신은 이런 식으로 작업을 수행 할 수 있습니다

interface BaseInterface<T extends BaseDTO> 
{ 
    void run(T dto); 
} 

class BaseService<T extends BaseDTO> implements BaseInterface<T> 
{ 
} 

class CustomService extends BaseService<CustomDTO> 
{ 
} 
+0

OK 좋은합니다. "기본"구현 인'BaseDTO'를 제공 할 수 있습니까? 그렇다면 맞춤 서비스가 반드시 유형 매개 변수를 제공 할 필요가 없습니까? – membersound

+0

무슨 뜻인지 확실하지 않습니다 ... 아마도'interface BaseDTOInterace가 BaseInterface를 확장합니다 '? – fge

+0

뜻은'CustomService extends BaseService'이며 type 매개 변수는'BaseDTO'의 기본 구현을 "선택"해야합니다. – membersound

관련 문제