如何将Vector <object>转换为Java中的Vector <object>?</object> </objects>

时间:2011-03-15 00:42:08

标签: java vector casting jcombobox

我正在使用带有自定义类对象的JComboBox,并且equals方法被覆盖,并且非常深入地集成到代码中。

问题是如果JComboBox下拉列表中的两个对象相等,那么如果选择了一个,则选择all,并且get selected index返回-1。

有没有办法将Vector<ObjectA>投射到Vector<ObjectB>? 我试过了

Vector<Clas_2> v_temp=(ca.courses.get(i).classes);

Vector<Clas_3> v_temp=(ca.courses.get(i).classes);

其中Clas_2Clas_1的父级,而Clas_3Clas_1的扩展,但它们都没有编译。

我只需要JComboBox不要使用过度的等于方法。

*注意我知道我可以将每个单独的元素转换为一个新的数组,但宁愿拥有更高效的内存解决方案。

3 个答案:

答案 0 :(得分:1)

不,不是没有类型不安全。但是你可以将Vector<Clas_1>转换为Vector<? extends Clas_2>,但这可以解决你的问题。

由于Clas_2Clas_1的父类,因此get Vector<Clas_1>的任何内容Clas_2的实例但是,您add Clas_2 Vector<Clas_1> Clas_2 Clas_1 extends并非{{1}}的所有实例都是{{1}}的实例。 {{1}}语法进行了区分。

答案 1 :(得分:1)

更改您在代码中声明变量的类型不会更改调用equals()方法的内容。它总是被覆盖的,无论你把它投射到什么。这就是多态性的工作原理。如果你想要一个不同的equals实现,你需要创建一个不同的类。

答案 2 :(得分:0)

我同意迈克的观点。请查看作者建议使用带有一些自定义代码的外部比较器的this article