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