-
Bug
-
Resolution: Duplicate
-
P3
-
None
-
6
-
x86
-
windows_xp
FULL PRODUCT VERSION :
java version "1.6.0"
Java(TM) SE Runtime Environment (build 1.6.0-b105)
Java HotSpot(TM) Client VM (build 1.6.0-b105, mixed mode, sharing)
A DESCRIPTION OF THE PROBLEM :
Javadoc for Collection<E>.toArray<T>(T []) states that toArray(new Object[0]) is identical in function to toArray(). However Arrays.ArrayList.toArray() may return array that is not of type Object[]. This may cause unexpected ArrayStoreException.
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
compile and run attached source code
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
class [Ljava.lang.Object;
ACTUAL -
class [Ljava.lang.String;
Exception in thread "main" java.lang.ArrayStoreException: java.lang.Object
at Main.main(Main.java:7)
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
import java.util.*;
public class Main {
public static void main(String[] args) {
Object[] array = Arrays.asList("A").toArray();
System.out.println(array.getClass());
array[0] = new Object(); // cause ArrayStoreException
}
}
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
use toArray(new Object[0])
java version "1.6.0"
Java(TM) SE Runtime Environment (build 1.6.0-b105)
Java HotSpot(TM) Client VM (build 1.6.0-b105, mixed mode, sharing)
A DESCRIPTION OF THE PROBLEM :
Javadoc for Collection<E>.toArray<T>(T []) states that toArray(new Object[0]) is identical in function to toArray(). However Arrays.ArrayList.toArray() may return array that is not of type Object[]. This may cause unexpected ArrayStoreException.
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
compile and run attached source code
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
class [Ljava.lang.Object;
ACTUAL -
class [Ljava.lang.String;
Exception in thread "main" java.lang.ArrayStoreException: java.lang.Object
at Main.main(Main.java:7)
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
import java.util.*;
public class Main {
public static void main(String[] args) {
Object[] array = Arrays.asList("A").toArray();
System.out.println(array.getClass());
array[0] = new Object(); // cause ArrayStoreException
}
}
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
use toArray(new Object[0])
- duplicates
-
JDK-6260652 (coll) Arrays.asList(x).toArray().getClass() should be Object[].class
-
- Closed
-