17.1.4 パラメタ型

インジェクション用アノテーションを指定できるパラメタ型の一覧,およびDefaultValueアノテーションを組み合わせて使用できるかどうかを次の表に示します。

表17-8 各アノテーションをサポートしているパラメタの型

項番データ型アノテーション
PathParamQueryParamMatrixParamCookieParamHeaderParamFormParamContext
1プリミティブint※1※1※2※1※1×
2short※1※1※2※1※1×
3long※1※1※2※1※1×
4float※1※1※2※1※1×
5double※1※1※2※1※1×
6char※1※1※2※1※1×
7byte※1※1※2※1※1×
8boolean※1※1※2※1※1×
9ラッパクラスInteger※1※1※2※1※1×
10Short※1※1※2※1※1×
11Long※1※1※2※1※1×
12Float※1※1※2※1※1×
13Double※1※1※2※1※1×
14Character×××××××
15Byte※1※1※2※1※1×
16Boolean※1※1※2※1※1×
17String型の引数を一つ持つコンストラクタを持つ型※7※1,※7※1,※7※2,※7※1,※7※1,※7×
18String型の引数を一つ持ち,その型のインスタンスを返すstaticなvalueOfメソッドを持つ型※7※1,※7※1,※7※2,※7※1,※7※1,※7×
19String型の引数を一つ持ち,その型のインスタンスを返すstaticなfromStringメソッドを持つ型※7※1,※7※1,※7※2,※7※1,※7※1,※7×
20String型の引数を一つ持ち,その型のインスタンスを返すstaticなfromStringメソッドを持つenum型※3,※7※1,※3,※7※1,※3,※7※2,※3,※7※1,※3,※7※1,※3,※7×
21String型の引数を一つ持ち,その型のインスタンスを返すstaticなvalueOfとfromStringメソッドの両方を持つenum以外の型※4,※7※1,※4,※7※1,※4,※7※2,※4,※7※1,※4,※7※1,※4,※7×
22上記以外×××××××
23List<T>TがIntegerの場合××
24T がShortの場合××
25TがLongの場合××
26T がFloatの場合××
27TがDoubleの場合××
28Tが Characterの場合×××××××
29TがByteの場合××
30TがBooleanの場合××
31TがString型の引数を一つ持つコンストラクタを持つ型の場合※7※7※7×※7※7×
32TがString型の引数を一つ持ち,その型のインスタンスを返すstaticなvalueOfメソッドを持つ場合※7※7※7×※7※7×
33TがString型の引数を一つ持ち,その型のインスタンスを返すstaticなfromStringメソッドを持つ場合※7※7※7×※7※7×
34TがString型の引数を一つ持ち,その型のインスタンスを返すstaticなfromStringメソッドを持つenum型の場合※3,※7※3,※7※3,※7×※3,※7※3,※7×
35TがString型の引数を一つ持ち,その型のインスタンスを返すstaticなvalueOfメソッドとfromStringメソッドの両方を持つenum以外の型の場合※4,※7※4,※7※4,※7×※4,※7※4,※7×
36Tが上記以外の場合×××××××
37Set<T>※5TがIntegerの場合××
38T がShortの場合××
39TがLongの場合××
40T がFloatの場合××
41TがDoubleの場合××
42Tが Characterの場合×××××××
43TがByteの場合××
44TがBooleanの場合××
45TがString型の引数を一つ持つコンストラクタを持つ型の場合※7※7※7×※7※7×
46TがString型の引数を一つ持ち,その型のインスタンスを返すstaticなvalueOfメソッドを持つ場合※7※7※7×※7※7×
47TがString型の引数を一つ持ち,その型のインスタンスを返すstaticなfromStringメソッドを持つ場合※7※7※7×※7※7×
48TがString型の引数を一つ持ち,その型のインスタンスを返すstaticなvalueOfメソッドとfromStringメソッドの両方を持つenum型の場合※3,※7※3,※7※3,※7×※3,※7※3,※7×
49TがString型の引数を一つ持ち,その型のインスタンスを返すvalueOfメソッドとfromStringメソッドの両方を持つenum以外の型の場合※4,※7※4,※7※4,※7×※4,※7※4,※7×
50Tが上記以外の場合×××××××
51Sorted
Set<T>※5,※6
TがIntegerの場合×××××××
52T がShortの場合×××××××
53TがLongの場合×××××××
54T がFloatの場合×××××××
55TがDoubleの場合×××××××
56Tが Characterの場合×××××××
57TがByteの場合×××××××
58TがBooleanの場合×××××××
59TがString型の引数を一つ持つコンストラクタを持つ型の場合×※7,※8×※7,※9×※7,※9××※7,※9×※7,※9×
60TがString型の引数を一つ持ち,その型のインスタンスを返すstaticなvalueOfメソッドを持つ場合×※7,※8×※7,※9×※7,※9××※7,※9×※7,※9×
61TがString型の引数を一つ持ち,その型のインスタンスを返すstaticなfromStringメソッドを持つ場合×××××××
62TがString型の引数を一つ持ち,その型のインスタンスを返すstaticなvalueOfメソッドとfromStringメソッドの両方を持つenum型の場合×××××××
63TがString型の引数を一つ持ち,その型のインスタンスを返すstaticなvalueOfメソッドとfromStringメソッドの両方を持つenum以外の型の場合×××××××
64Tが上記以外の場合×××××××
65PathSegment××××××
66コンテキスト型UriInfo××××××
67HttpHeaders××××××
68Request××××××
69SecurityContext××××××
70Providers××××××
71ServletConfig××××××
72ServletContext××××××
73HttpServletRequest××××××
74HttpServletResponse××××××
(凡例)
○:インジェクション用アノテーションを使用できることを示します。
×:インジェクション用アノテーションを使用できないことを示します。
△:インジェクション用アノテーションを使用できることを示します。ただし,DefaultValueアノテーションを組み合わせて使用しないでください。
注※1
同じ名称のパラメタを複数受け取った場合,JAX-RSエンジンは最初のパラメタの値だけを使用します。
注※2
同じ名称のパラメタを複数受け取った場合,JAX-RSエンジンは最後のパラメタの値をインジェクトします。
注※3
String型の引数を一つ持ち,その型のインスタンスを返すstaticなvalueOfメソッドとstaticなfromStringメソッドの両方を持つ型の場合,JAX-RSエンジンはstaticなfromStringメソッドを使用します。
注※4
String型の引数を一つ持ち,その型のインスタンスを返すstaticなvalueOfメソッドとstaticなfromStringメソッドの両方を持つ型の場合,JAX-RSエンジンはstaticなvalueOfメソッドを使用します。
注※5
enum型以外の場合,Tに指定するクラス,またはその親以上のクラスでは,Java言語の規約に従ってjava.lang.Objectのequals()メソッドとhashCode()メソッドを適切に実装している必要があります。
注※6
enum型以外の場合,Tに指定するクラス,またはその親以上のクラスでは,java.lang.Comparableインタフェースを実装している必要があります。
注※7
valueOfメソッド,fromStringメソッド,およびコンストラクタは,インジェクションの検証のため,初期化時に複数回呼び出されることがあります。
注※8
TがString型の場合は使用できます。ただし,DefaultValueアノテーションを組み合わせて使用しないでください。
注※9
TがString型の場合は使用できます。

上記の表の項番22,項番36,項番50,項番64,および項番65の型に各アノテーションが使用された場合,エラーが発生します(KDJJ10006-E)。ルートリソースクラスではHTTPステータスコード500のHTTPレスポンスが返されます。サブリソースクラスでは,例外マッピングプロバイダで処理できるjava.lang.RuntimeExceptionがスローされます。

また,上記の表の項番14,項番28,項番42,および項番56の型に各アノテーションが使用された場合,例外マッピングプロバイダで処理できるjava.lang.RuntimeExceptionがスローされます。