中調用方法我目前正在開展一些學校項目;我們正在開發一個簡單的RPG,但我似乎在質疑我的一些Java代碼。不能在類
我有一個Abstract
類稱爲Item
,那我也Armor
和Weapon
類,其無論從Item
繼承。 Armor
和Weapon
都具有Item
不具有的一些屬性。
所以在我的數據庫的包裝,我有一個loaditem
方法,後者的統計數據,並創建我的類的實例(閱讀代碼中的註釋):
public Item loadItem(int itemID)
{
// Setting item, as a Item, as it can be both Weapon or Armor
Item item;
try {
// Build prepared statement
PreparedStatement stmt = con.prepareStatement("SELECT * FROM item WHERE iid = ?");
// Set Parameter
stmt.setInt(1, itemID);
// Execute the query
ResultSet rs = stmt.executeQuery();
// Get row
rs.first();
// Set all values and keys
if(rs.getString("type").equals("weapon")) {
item = new Weapon();
// SetDamage is unique to Weapon, and setDefense to armor
item.setDamage();
}else {
item = new Armor();
item.setDefense()
}
item.setIid(rs.getInt("iid"));
item.setName(rs.getString("name"));
item.setDescription(rs.getString("description"));
item.setSellValue(rs.getInt("sellvalue"));
item.setBuyValue(rs.getInt("buyvalue"));
item.setStrength(rs.getInt("strength"));
item.setAgility(rs.getInt("agility"));
item.setEndurance(rs.getInt("endurance"));
我沒有問題設置的Weapon
一個實例或Armor
,但它無法找到類中的方法。
我是否真的需要創建武器和裝甲物體,並在返回後輸入?
@Downvoter:護理評論? –
因爲如果我在if裏創建一個實例,我只能在那裏使用它。該項目本身有大量的統計數據,所以如果我使用你的例子,我將不得不在if和else中寫入10個setter。這似乎很愚蠢,但如果沒有辦法。 :) – MartinElvar
@MartinElvarJensen:好吧,如果你真的*在if語句後面顯示*其他代碼使用'item',我會以不同的方式寫出答案。我猜不出你既沒有顯示也沒有描述的代碼! –