jav*_*900 3 java generics class predicate nhibernate-criteria
我有以下Person通过 Id 返回对象的方法:
private Person getPersonById(String client) {
Person output = null;
EntityManager entityManager = null;
try {
entityManager = entityManagement.createEntityManager(client);
output = entityManager.find(Person.class, id);
} catch (Exception e) {
// handle
} finally {
entityManagement.closeEntityManager(client, entityManager);
}
return output;
}
Run Code Online (Sandbox Code Playgroud)
有没有一种方法可以使这个方法更加通用,以便我也可以传递其他对象类型,
Place例如 Cost?请注意,它们不继承相同的超类。
例如,我应该将例如Person.class作为方法参数等传递吗?
如果你想传入一个类对象并使你的方法通用,你可以这样做:
private <E> E getObjectById(String client, Class<E> cls) {
E output = null;
EntityManager entityManager = null;
try {
entityManager = entityManagement.createEntityManager(client);
output = entityManager.find(cls, id);
} catch (Exception e) {
// handle
} finally {
entityManagement.closeEntityManager(client, entityManager);
}
return output;
}
Run Code Online (Sandbox Code Playgroud)
如果您Person.class作为cls参数传递,它将相当于您的原始代码。
假设它将entityManager.find接受任何类并尝试返回该类的实例。
如果entityManager.find对其接受的类的特征有一些限制,则需要在泛型类型参数中指定它们<E>。
| 归档时间: |
|
| 查看次数: |
856 次 |
| 最近记录: |