membersound
membersound

Reputation: 86657

Override method with specific implementation class?

Is it possible to override a class, but provide a specific implementation that must be provided if the overridden method is directly called on this method (and not on an super interface)?

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) {

    }
}

My goal is:

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

Upvotes: 0

Views: 73

Answers (1)

fge
fge

Reputation: 121702

You can do it like this:

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

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

class CustomService extends BaseService<CustomDTO>
{
}

Upvotes: 4

Related Questions