@@ -173,10 +173,10 @@ public static void writeAttribute(StreamingBuffer buf, int type, CharSequence ke
173173 writeBooleanAttribute (buf , keyUtf8 , (boolean ) value );
174174 break ;
175175 case LONG :
176- writeLongAttribute (buf , keyUtf8 , (long ) value );
176+ writeLongAttribute (buf , keyUtf8 , (( Number ) value ). longValue () );
177177 break ;
178178 case DOUBLE :
179- writeDoubleAttribute (buf , keyUtf8 , (double ) value );
179+ writeDoubleAttribute (buf , keyUtf8 , (( Number ) value ). doubleValue () );
180180 break ;
181181 case STRING_ARRAY :
182182 writeStringArrayAttribute (buf , keyUtf8 , (List <String >) value );
@@ -185,10 +185,10 @@ public static void writeAttribute(StreamingBuffer buf, int type, CharSequence ke
185185 writeBooleanArrayAttribute (buf , keyUtf8 , (List <Boolean >) value );
186186 break ;
187187 case LONG_ARRAY :
188- writeLongArrayAttribute (buf , keyUtf8 , (List <Long >) value );
188+ writeLongArrayAttribute (buf , keyUtf8 , (List <? extends Number >) value );
189189 break ;
190190 case DOUBLE_ARRAY :
191- writeDoubleArrayAttribute (buf , keyUtf8 , (List <Double >) value );
191+ writeDoubleArrayAttribute (buf , keyUtf8 , (List <? extends Number >) value );
192192 break ;
193193 default :
194194 throw new IllegalArgumentException ("Unknown attribute type: " + type );
@@ -324,10 +324,10 @@ private static void writeBooleanArrayAttribute(
324324 }
325325
326326 private static void writeLongArrayAttribute (
327- StreamingBuffer buf , byte [] keyUtf8 , List <Long > values ) {
327+ StreamingBuffer buf , byte [] keyUtf8 , List <? extends Number > values ) {
328328 long [] longValues = new long [values .size ()];
329329 for (int i = 0 ; i < longValues .length ; i ++) {
330- longValues [i ] = values .get (i ); // avoid repeated unboxing later
330+ longValues [i ] = values .get (i ). longValue () ; // avoid repeated unboxing later
331331 }
332332 int arraySize = 0 ;
333333 for (long longValue : longValues ) {
@@ -355,7 +355,7 @@ private static void writeLongArrayAttribute(
355355 }
356356
357357 private static void writeDoubleArrayAttribute (
358- StreamingBuffer buf , byte [] keyUtf8 , List <Double > values ) {
358+ StreamingBuffer buf , byte [] keyUtf8 , List <? extends Number > values ) {
359359 int arraySize = 11 * values .size ();
360360 int valueSize = 1 + sizeVarInt (arraySize ) + arraySize ;
361361 int keyValueSize =
@@ -368,11 +368,11 @@ private static void writeDoubleArrayAttribute(
368368 writeVarInt (buf , valueSize );
369369 writeTag (buf , 5 , LEN_WIRE_TYPE );
370370 writeVarInt (buf , arraySize );
371- for (double value : values ) {
371+ for (Number value : values ) {
372372 writeTag (buf , 1 , LEN_WIRE_TYPE );
373373 buf .put ((byte ) 9 );
374374 writeTag (buf , 4 , I64_WIRE_TYPE );
375- writeI64 (buf , value );
375+ writeI64 (buf , value . doubleValue () );
376376 }
377377 }
378378}
0 commit comments