我是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
多个构造函数在每个类中是否相同? –