我是Java新手,所以這可能很容易。我有一系列使用接口共享大多數變量/方法的子類,但是每個子類都有一些其類型是唯一的,這就是爲什麼我這樣設計代碼的原因。但是,當我從數據庫中檢索數據(數據以每個子類的相同格式存儲)時,我希望能夠創建一個基類的實例,或者我可以輕鬆地創建一個基類的實例轉換爲我需要的子類或者有某種工廠給我一個子類實例。使用共享接口/基類實例化子類的更好方法
這是我現在的代碼,它只是檢查數據的類型,然後創建一個新的子類實例,但它感覺對我來說很重複。
還好嗎?
if(rs.getString("action_type").equals("block-break") || rs.getString("action_type").equals("block-place")){
actions.add(new BlockAction(
rs.getString("action_time"),
rs.getString("action_type"),
rs.getString("world"),
rs.getString("player"),
rs.getInt("x"),
rs.getInt("y"),
rs.getInt("z"),
rs.getString("data")
));
}
if(rs.getString("action_type").equals("entity-kill")){
actions.add(new EntityKillAction(
rs.getString("action_time"),
rs.getString("action_type"),
rs.getString("world"),
rs.getString("player"),
rs.getInt("x"),
rs.getInt("y"),
rs.getInt("z"),
rs.getString("data")
));
}
您正在創建的對象是否具有多個構造函數?他們是否有一個默認(空)構造函數以及如你所示的那樣需要8個參數的構造函數? –
它們在每個子類中都有兩個不同的構造函數。沒有空的默認值。 – helion3
多個構造函數在每個類中是否相同? –