JaxRs используют интерфейс в качестве параметра - PullRequest
0 голосов
/ 14 декабря 2018

Я использую JavaEE 8 в своем собственном проекте.
Можно ли использовать интерфейс в качестве параметра в JaxRs?
, например, если у меня есть такой интерфейс:

public interface Thing {
      // Without any method .
}   

и двареализация этого:

public class Car implements Thing {
    private String name ;
    private String model ;
}

public class AirPlan implements Thing {
    private String name ;
    private String model  ;
    private long age ;
}     

Я хочу объявить API с фабрикой в ​​качестве параметра, подобного этому:

@Path("/create")
    @POST
    @Consumes({MediaType.APPLICATION_JSON})
    public Response createThing(Thing thing) {
       // execute some operations ....
}     

, если клиент отправляет имя, модель, возраст в качестве параметров, этот метод создает объект AirPlan иЕсли клиент отправляет только имя, модель в качестве параметров, этот метод создает объект Car.

ОБНОВЛЕНИЕ
У меня есть это обновление на вопрос:
изменить вещь на класс.

public class Thing {
    private String type ; 
}

и расширить этот класс из этого.

Теперь:

@Path("/create")
    @POST
    @Consumes({MediaType.APPLICATION_JSON})
    public Response createThing(Thing thing) {
       // execute some operations ....
}       

создать автомобиль, если type=="car", или создать самолет, если type=="airplan"

...