Declare a subtype of a parameter in the Java interface, use subtypes in Java implementation methods

I want to declare a method in an interface where the parameter of a method defined in implementation classes can be a subtype of a specific java class, for example:

interface Processor{
      processRequest( Request r);
}

public class SpecialRequest extends Request{...}

public class SpecialProcessor implements Processor{

      processRequest(SpecialRequest r){...}
}

but I get errors in SpecialProcessor because it implements the Processor interface incorrectly. What can I change in the processor interface to enable the definition in SpecialProcessor?

+3
source share
2 answers

You can enter Processor:

public interface Processor<R extends Request> {
    void processRequest(R r);
}


public class SpecialProcessor implements Processor<SpecialRequest> {
    public void processRequest(SpecialRequest r) {
       ...
    }
}
+9
source

- , , . , Request ( any Request) processRequest, , , .

, , :

interface Processor<R extends Request> {
    void processRequest(R r);
}

public class SpecialProcessor implements Processor<SpecialRequest> {

    public void processRequest(SpecialRequest r) { ... }

}

, , "" , / Processor<Request> - SpecialProcessor , . , , / Processor<SpecialRequest>, .

+3

Source: https://habr.com/ru/post/1788279/


All Articles