我有Vector< MyClass > myvector
;大小为0 - 400,我想我的方法返回一个新的Vector,其位置为0-100(如果存在)。但是我的代码:
return (Vector< MyClass >) myvector.sublist( 0, Math.min(myvector.size,100) );
在返回线处崩溃。
ERROR/AndroidRuntime(2053): java.lang.ClassCastException: java.util.Collections$SynchronizedRandomAccessList
我做错了什么?我该如何解决?
提前致谢
答案 0 :(得分:4)
Vector<MyClass>.subList()
返回List<MyClass>
。 List<MyClass>
无法转换为Vector<MyClass>
。
通常建议您,通常应该使用引用接口类型,而不是尽可能使用引用到具体类型。遵循这一建议可以避免这种难题。
答案 1 :(得分:3)
Vector.subList的返回类型不一定是Vector类,而是List的实现。您可以通过以下方式解决此问题:
return new Vector<MyClass>(myvector.subList(0, Math.min(myvector.size(), 100)));
编辑:感谢Stjepan和Steve注意到不必要的条件。
答案 2 :(得分:2)
子列表返回一个List,如果你想这样做,你将不得不这样做:
new Vector(myList);
答案 3 :(得分:1)
因为子列表返回的是列表而不是向量