gpt4 book ai didi

Java多态性利用

转载 作者:行者123 更新时间:2023-12-01 23:11:17 25 4
gpt4 key购买 nike

这是一个非常菜鸟的基本java问题。

我有一个父类(super class)。

public class MenuItem {

private int itemId;

public int getItemId() {
return itemId;
}

public void setItemId(int itemId) {
this.itemId = itemId;
}

}

然后子类:

public class Beverage extends MenuItem {

private PriceSML price;

public PriceSML getPrice() {
return price;
}

public void setPrice(PriceSML price) {
this.price = price;
}

}

public class Cake extends MenuItem {

private SugarLevel sugarLevel;

public SugarLevel getSugarLevel() {
return sugarLevel;
}

public void setSugarLevel(SugarLevel price) {
this.sugarLevel= sugarLevel;
}

}

然后我创建了一个 DAO 方法:

public boolean createItem(MenuItem menuItem) {
boolean result = false;
try {
Connection conn = createConnection();
Statement stmt = conn.createStatement();

String query = "INSERT INTO menu (menu_id, price)
+ "VALUES ('"
+ MenuItem.getItemCode()
+ "')";
//NOTE: HOW TO GET THE PRICE AND PUT IT IN MY QUERY

stmt.executeUpdate(query);
result = true;
} catch (Exception e) {
e.printStackTrace();
}
return result;
}

但是既然 PriceSML 价格在饮料中,我怎样才能获得它呢?即使我这样通过了

MenuItem menuItem = new Beverage();

所以我决定这样做:

public boolean createBeverageItem(Beverage beverage) {

}

public boolean createCakeItem(Cake Cake) {

}

依此类推...(例如,如果我有 100 个类别,则还有 100 多个方法)。请注意,我仅访问数据库中的菜单表。那么我怎样才能做得更好呢?

谢谢。

最佳答案

要通用地执行此操作,请对其通用。

不必使用 MenuItem 的子类,只需使用单个类 MenuItem 并在其中包含一个 HashMap 即可。然后,HashMap 从键映射到该 MenuItem 的所有属性的值。然后,您可以使用链接 MenuItem 表与 MenuItemProperties 表的一对多关系将它们存储在数据库中。

尝试按照您原来的方式进行操作很快就会失败,因为如果不知道 MenuItem 是什么类型,您实际上无法对其进行任何有用的操作。

另请注意,您直接将值插入查询字符串中。虽然这对于整数值来说足够安全,但这仍然是不好的做法,并且如果您拥有 String 值,则非常危险。

关于Java多态性利用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21940174/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com