我使用以下代码将Object数组转换为String数组:
Object Object_Array[]=new Object[100];
// ... get values in the Object_Array
String String_Array[]=new String[Object_Array.length];
for (int i=0;i<String_Array.length;i++) String_Array[i]=Object_Array[i].toString();
Run Code Online (Sandbox Code Playgroud)
但我想知道是否有另一种方法可以做到这一点,例如:
String_Array=(String[])Object_Array;
Run Code Online (Sandbox Code Playgroud)
但这会导致运行时错误: Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;
这样做的正确方法是什么?
假设我有一个ArrayList
ArrayList<MyClass> myList;
Run Code Online (Sandbox Code Playgroud)
我想打电话给阿瑞,是否有使用性能的原因
MyClass[] arr = myList.toArray(new MyClass[myList.size()]);
Run Code Online (Sandbox Code Playgroud)
过度
MyClass[] arr = myList.toArray(new MyClass[0]);
Run Code Online (Sandbox Code Playgroud)
?
我更喜欢第二种风格,因为它不那么冗长,我认为编译器会确保空数组不会真正被创建,但我一直想知道这是不是真的.
当然,在99%的情况下,它不会以某种方式产生影响,但我希望在我的普通代码和优化的内部循环之间保持一致的风格......
根据java doc的toArray()返回包含此集合中所有元素的数组。
和toArray(Object obj [])。返回包含此集合中所有元素的数组;返回数组的运行时类型是指定数组的运行时类型。
第一个toArray()我了解,但是第二个toArray(Object obj [])我无法理解。请举例说明。