Java 如何投射向量<;对象a>;到向量<;ObjectB>;在爪哇?
我将JComboBox与一个自定义类对象一起使用,equals方法被过度使用,并深入集成到代码中 问题在于,如果JComboBox下拉列表中的两个对象相等,那么如果选择了一个对象,则会选择所有对象,并且get selected索引返回-1 有没有办法将Java 如何投射向量<;对象a>;到向量<;ObjectB>;在爪哇?,java,vector,casting,jcombobox,Java,Vector,Casting,Jcombobox,我将JComboBox与一个自定义类对象一起使用,equals方法被过度使用,并深入集成到代码中 问题在于,如果JComboBox下拉列表中的两个对象相等,那么如果选择了一个对象,则会选择所有对象,并且get selected索引返回-1 有没有办法将向量转换为向量? 我试过了 Vector v_temp=(ca.courses.get(i.class)); 及 Vector v_temp=(ca.courses.get(i.class)); 其中,Clas_2是Clas_1的父级,Clas
向量
转换为向量
?
我试过了
Vector v_temp=(ca.courses.get(i.class));
及
Vector v_temp=(ca.courses.get(i.class));
其中,Clas_2
是Clas_1
的父级,Clas_3
是Clas_1
的扩展,但它们都不能编译
我只需要JComboBox不要使用过度使用的equals方法
*注意:我知道我可以将每个元素强制转换为一个新的数组,但我更希望有一个更高效的内存解决方案。不,不是因为类型不安全。但是,您可以将
Vector
强制转换为Vector更改您在代码中声明的变量类型不会更改调用的equals()
方法。它将始终是被覆盖的,无论您将它转换为什么。这就是多态性的工作原理。如果你想要一个不同的equals实现,你需要创建一个不同的类。Hmm,我尝试了这个方法,它可以编译,但是它似乎仍然在Clas_1中使用equals方法,而不是Clas_2(它总是返回false)。事实上,它并不能解决他的真正问题。无论施法多少,他都无法超越equals
行为。在Java中不能这样做。如果您将其更改为Clas_2或Clas_3类型,并且其eqauls方法总是返回false,那么它不会使用当前类型的equals方法吗?不会。它将始终使用基础类型的equals方法。强制转换变量实际上并不会改变它的底层类型,只是改变它在代码中的外观。类型是断言类型“至少”必须是什么的一种方式。实际情况可能完全不同。我建议大家阅读一下多态性,以及它如何融入Java和OO编程。我想我用C++/C编写代码的时间太长了,你可以很容易地切换类型。有没有办法让JComboBox不使用equals方法?这是不可能的,没有。您需要做的是更改实际的底层类型。编写一个新类,您可以将引用交给Clas_1
或Clas_2
等,但提供所需的equals实现可能是一种有效的方法。我猜如果你不能在你的类中实现一个精确的equals方法,那么它们可能不是放在JComboBox中的正确类型。也许在每个类中都发布equals实现?我认为最好的办法是让for循环遍历我的向量,并使用toString()添加每个Clas_1。谢谢你的帮助。
Vector<Clas_2> v_temp=(ca.courses.get(i).classes);
Vector<Clas_3> v_temp=(ca.courses.get(i).classes);