0

i'm confused on why:

HATEOASController interface:

public interface HATEOASController {
    ResponseEntity<?> findAll(Pageable pageable);
    ResponseEntity<?> findById(Long id);
}

EstadoController:

     public class EstadoController implements HATEOASController {
           //other methods

       @GetMapping(value={"/", ""})
       public ResponseEntity<?> findAll(Pageable pageable){
      
            Page<Estado> estados = estadoService.findAll(pageable);
            estados.forEach(i->{               //**HERE**
                                              //   \/
                HATEOASBuilder.linksBuilder(i, EstadoController.class);
                HATEOASBuilder.linksBuilderWithMap(i.getCidades());
            });
        return new ResponseEntity(estados, HttpStatus.OK);
    }

HATEOASBuilder:

public static void linksBuilder (HATEOASBuilder estado, Class<? extends HATEOASController> ControllerClass){
//methods}

This above works, but like this below:

HATEOASBuilder:

public static void linksBuilder (HATEOASBuilder estado, Class<HATEOASController> ControllerClass){
    //methods}

doesn't work (Required type:Class< HATEOASController >, Provided:Class< EstadoController >)

Using interface argument doesn't mean that i can pass any class implementing it? (EstadoController in this case), i don't get why the extends is needed

sylleryum
  • 130
  • 1
  • 9
  • 1
    Because `Class` is not a subtype of `Class`. – Michał Krzywański Sep 21 '20 at 17:35
  • I don't get it, exactly, EstadoController is not a subtype of HATEOASController, however, upon using Class extends HATEOASController> it works – sylleryum Sep 22 '20 at 11:23
  • 1
    [Is List a subclass of List? Why are Java generics not implicitly polymorphic](https://stackoverflow.com/questions/2745265/is-listdog-a-subclass-of-listanimal-why-are-java-generics-not-implicitly-po/2745306) – Michał Krzywański Sep 22 '20 at 12:17

0 Answers0