日期:2014-05-20  浏览次数:20810 次

高手来,"String s[]=new String[0];"有意义吗?再看......
"String   s[]=new   String[0]; "有意义吗?难道表示分配长度为0的String数组吗?

再看若listener定义为:Vector   listener=new   Vector(),Characterlistener是自定义的观察者.

CharacterListener[]   cl=(CharacterListener[])listener.toArray(new   CharacterListener[0]);

谁能告诉我上面的语句做了什么,最重要的是其中的 "new   Characterlistener[0] "有意义吗?这表示分配了一个长度为0的Characterlistener数组吗???上面语句意义何在?


------解决方案--------------------
String[] s=new String[0] 的确没有什么意思,就是将s引向一个长度为0的String类型数组

CharacterListener[] cl=(CharacterListener[])listener.toArray(new CharacterListener[0]);
1,声明一个CharacterListener数组类型c1
2,将listener转化为一个长度为0的CharacterListener数组,并把这个数组强制类型转化为CharacterListener
3,把这个数组引用给c1
------解决方案--------------------
it makes no sense! do you understand?
------解决方案--------------------
Vector 是个变长的数组
new CharacterListener[0]
目的就是使之转换成一个固定长度的数组
------解决方案--------------------
CharacterListener[] cl=(CharacterListener[])listener.toArray()
如果是这样
则可能报错
------解决方案--------------------
String[] str = (String[]) result.toArray(new String[1]);即告诉Vector,我要得到的数组的类型。

java中的强制类型转换只是针对单个对象的,想要偷懒,将整个数组转换成另外一种类型的数组是不行的。