2017-10-12 4 views
-1

と仮定コードは基本的に私は{リソース}に来るものは何でもURIに応じて一覧<アップル>または一覧<マンゴー>などの一般的なリストが欲しいパスパラメータをJAX-RSのクラスに変換するには?

@Path("/app/{resource}") //Suppose resource comes as Apple or Mango. 
@Produces(value=MediaType.APPLICATION_JSON)  
public class AppResource { 

    @GET 
    public Response getResource(@PathParam("resource") String resource) { 
    // Here want to convert resource to Apple or Mango class so that I can create a List<Apple> or List<Mango>. 
    } 
} 

、等です。

+0

レスポンスは 'JSON'で、そこにはタイプがないので、' List 'は完全に問題ありません。それが必要なのであれば、 'Apple'や' Mango'オブジェクトだけをリストに入れるのはあなた次第です。 – Andreas

答えて

0

あなたのコードは、明示的なList<Apple>List<Mango>リストを持つようにしたい場合は、あなたがこのようなコードの何かを記述する必要があります。

@GET 
public Response getResource(@PathParam("resource") String resource) { 
    List<?> list; 
    switch (resource) { 
     case "apples": 
      list = getApples(); 
      break; 
     case "mangos": 
      list = getMangos(); 
      break; 
     default: 
      return Response.status(Status.NOT_FOUND).build(); 
    } 
    return Response.ok(list); 
} 

private List<Apple> getApples() { 
    List<Apple> appleList = new ArrayList<>(); 
    // add apples 
    return appleList; 
} 

private List<Mango> getMangos() { 
    List<Mango> mangoList = new ArrayList<>(); 
    // add mangos 
    return mangoList; 
} 

switch文のdefault句は/app/sailboatsのようなもののためにその要求を確保通常の404「ページが見つかりません」というエラーで失敗します。

関連する問題