如何在Java中将Vector 转换为Vector ?
我正在使用带有自定义类对象的JComboBox,并且equals方法被覆盖,并且非常深入地集成到代码中。
问题是如果两个对象在JComboBox下拉列表中相等,那么如果选择了一个,则选择all,并且get selected index返回-1。
有没有办法将Vector
转换为Vector
? 我试过了
Vector v_temp=(ca.courses.get(i).classes);
和
Vector v_temp=(ca.courses.get(i).classes);
其中Clas_2
是Clas_2
的父Clas_1
, Clas_3
是Clas_3
的扩展,但它们都没有编译。
我只需要JComboBox不要使用over-ridden equals方法。
*注意我知道我可以将每个单独的元素转换为一个新的数组,但宁愿拥有更高效的内存解决方案。
在代码中更改声明变量的类型不会更改调用equals()
方法的类型。 它总是被覆盖的,无论你把它投射到什么。 这就是多态性的工作原理。 如果你想要一个不同的equals实现,你需要创建一个不同的类。
不,不是没有类型不安全。 但你可以将Vector
为Vector extends Clas_2>
Vector extends Clas_2>
虽然哪个可以解决你的问题。
由于Clas_2
是Clas_2
的父类, Clas_1
从Vector
get
任何内容Vector
的实例,但您无法add
任何Clas_2
add
到Vector
因为并非所有Clas_2
实例都是Clas_1
实例。 extends
语法进行了区分。
我同意迈克的观点。 看看这篇文章 ,作者建议使用带有一些自定义代码的外部比较器。