@@ -111,15 +111,50 @@ public static String toGenericString(Member o) {
111
111
*/
112
112
public static Object boxPrimitiveArray (Object obj ) {
113
113
Class <?> componentType = obj .getClass ().getComponentType ();
114
- if (componentType != null && componentType .isPrimitive ()) {
115
- int length = Array .getLength (obj );
116
- Object [] boxedArray = newArray (WRAPPER_CLASSES .get (componentType ), length );
117
-
118
- for (int i = 0 ; i < length ; i ++) {
119
- boxedArray [i ] = Array .get (obj , i );
120
- }
121
-
122
- obj = boxedArray ;
114
+ if (componentType == null || !componentType .isPrimitive ()) {
115
+ return obj ;
116
+ }
117
+ int length = Array .getLength (obj );
118
+ if (componentType == int .class ) {
119
+ int [] source = (int []) obj ;
120
+ Integer [] target = new Integer [length ];
121
+ for (int i = 0 ; i < length ; i ++) target [i ] = source [i ];
122
+ return target ;
123
+ } else if (componentType == long .class ) {
124
+ long [] source = (long []) obj ;
125
+ Long [] target = new Long [length ];
126
+ for (int i = 0 ; i < length ; i ++) target [i ] = source [i ];
127
+ return target ;
128
+ } else if (componentType == double .class ) {
129
+ double [] source = (double []) obj ;
130
+ Double [] target = new Double [length ];
131
+ for (int i = 0 ; i < length ; i ++) target [i ] = source [i ];
132
+ return target ;
133
+ } else if (componentType == float .class ) {
134
+ float [] source = (float []) obj ;
135
+ Float [] target = new Float [length ];
136
+ for (int i = 0 ; i < length ; i ++) target [i ] = source [i ];
137
+ return target ;
138
+ } else if (componentType == boolean .class ) {
139
+ boolean [] source = (boolean []) obj ;
140
+ Boolean [] target = new Boolean [length ];
141
+ for (int i = 0 ; i < length ; i ++) target [i ] = source [i ];
142
+ return target ;
143
+ } else if (componentType == byte .class ) {
144
+ byte [] source = (byte []) obj ;
145
+ Byte [] target = new Byte [length ];
146
+ for (int i = 0 ; i < length ; i ++) target [i ] = source [i ];
147
+ return target ;
148
+ } else if (componentType == char .class ) {
149
+ char [] source = (char []) obj ;
150
+ Character [] target = new Character [length ];
151
+ for (int i = 0 ; i < length ; i ++) target [i ] = source [i ];
152
+ return target ;
153
+ } else if (componentType == short .class ) {
154
+ short [] source = (short []) obj ;
155
+ Short [] target = new Short [length ];
156
+ for (int i = 0 ; i < length ; i ++) target [i ] = source [i ];
157
+ return target ;
123
158
}
124
159
return obj ;
125
160
}
0 commit comments