Java DAO工厂动态返回的对象类型
我正在尝试编写简单的 DAO,它将根据存储在 String 字段中的类型创建实体对象。如何返回动态改变的类型? UserDAO 类的 findById() 方法应返回 User 类对象。 ProductDAO 的相同方法应返回 Product。 我不想在每个扩展 DAO 的类中实现 findById,它应该自动完成。
示例代码:
class DAO {
protected String entityClass = "";
public (???) findById(int id) {
// some DB query
return (???)EntityFromDatabase; // how to do this?
}
}
class UserDAO extends DAO {
protected String entityClass = "User";
}
class ProductDAO extends DAO {
protected String entityClass = "Product";
}
class User extends Entity {
public int id;
public String name;
}
I'm trying to write simple DAO that will create entity objects based on their type stored in String field. How to return type that is changed dynamicly?
Method findById() of UserDAO class should return User class object. Same method for ProductDAO should return Product.
I don't want to implement findById in every class that extends DAO, it should be done automatically.
Example code:
class DAO {
protected String entityClass = "";
public (???) findById(int id) {
// some DB query
return (???)EntityFromDatabase; // how to do this?
}
}
class UserDAO extends DAO {
protected String entityClass = "User";
}
class ProductDAO extends DAO {
protected String entityClass = "Product";
}
class User extends Entity {
public int id;
public String name;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
修改为
Modify it to
使用 java 中的泛型。在这里找到一个例子。
Use Generics in java. Find an example here.
首先,不要使用
String
,而是使用类。接下来,使用entityManager
(请参阅 docs)现在您可以根据类型使用不同的
DAO
,例如Firstly, instead of using the
String
, use the class. Next up, use anentityManager
(see docs)Now you can use a different
DAO
dependent on the type e.g.