我是 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")
) );
}