use*_*356 2 java syntax autoboxing
我正在使用Netbeans.当我运行下面的程序时,我将其作为输出[I@de6ced!怎么会?
import java.util.Arrays;
import java.util.Vector;
public class Test {
public static void main (String[] args) {
int[] a = new int[1];
a[0] = 5;
Vector<Integer> a1 = new Vector(Arrays.asList(a));
System.out.println(a1.elementAt(0));
}
}
Run Code Online (Sandbox Code Playgroud)
我也试过解决它,但后来我得到了一个
线程"main"中的异常java.lang.ClassCastException:[我无法在TopCoder.Test.main(Test.java:13)中强制转换为java.lang.Integer Java结果:1
public static void main (String[] args) {
int[] a = new int[1];
a[0] = 5;
Vector<Integer> a1 = new Vector(Arrays.asList(a));
int b = a1.elementAt(0); /* EXCEPTION THROWN HERE */
System.out.println(b);
}
Run Code Online (Sandbox Code Playgroud)
[I@de6ced可细分为:
- [阵列
- I的整数
- de6ced与该参考哈希码(在的Sun Java,基本上是参考)
Object的toString()返回类似ClassName @ HashCode的东西,这正是你在这里看到的只是与(相当奇怪的)原始数组类发生的事情.
问题是该<T> List<T> asList(T...)方法推断出错误的类型.更改您的代码Integer[]而不是使用int[].这是int是原始的结果,但int []是一个对象.
你可以直接看到这个:
System.out.println(Arrays.asList(new int[]{5}));
Run Code Online (Sandbox Code Playgroud)
=> [[I@一些参考
System.out.println(Arrays.asList(new Integer[]{5}).get(0));
Run Code Online (Sandbox Code Playgroud)
=> 5
| 归档时间: |
|
| 查看次数: |
3423 次 |
| 最近记录: |