我正在开发一个可以让您在数据库中创建产品的项目。它包括一个带有可编辑组合框的表单,因此您可以为新产品选择预先存在的制造商,或者输入您想要与产品一起创建的新制造商的名称。
组合框填充了一组制造商对象(它们实现了 toString(),因此它们显示了一些有意义的东西)。
目前处理组合框输出的逻辑是这样实现的:
Object mfr = mfctrCombo.getSelectedItem ();
Product newPrd = new Product ();
// If the mfr is a string then we need to create a new Manufacturer
if (mfr instanceof String) {
Manufacturer newMfr = new Manufacturer ();
newMfr.setName ((String) mfr);
// Logic for persisting the new Manufacturer goes here
newPrd.setManufacturer (newMfr);
} else if (mfr instanceof Manufacturer) {
newPrd.setManufacturer ((Manufacturer) mfr);
}
// Logic for persisting the new Product goes here
这确实有效,但对我来说似乎不需要强制转换 mfr 对象。我在 if 块的开头进行 instanceof 检查,所以我知道对象在块内的类型是什么。在开始检查后是否真的有必要在块内进行强制转换?在我看来,它不应该是必需的。
虽然我是 Java 新手,但我相当确定我对组合框所做的并不是最佳实践,但因为它适用于一个有具体截止日期的大学项目,而且它似乎对出于这个目的,我宁愿离开讨论填充组合框以解决另一个问题的更好方法。