Я использую 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"