我的功能如下:
public boolean delete(int id) {
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
em.remove(em.find(Student.class, id));
em.getTransaction().commit();
return true;
}
现在我希望上面的函数是通用函数。所以我通过以下方式实现了相同的内容:
public boolean genericDelete(int id, Object ob) {
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
em.remove(em.find((Class) ob, id));
em.getTransaction().commit();
return true;
}
该函数没有任何缺陷,但IntellijIDEA抱怨对象被转换为Class。这可能是一种不好的做法,所以如何以适当的方式实现它。请帮忙......
答案 0 :(得分:1)
不需要在那里施放。 Java为此提供了直接的方法。
Class c = ob.getClass();
Oracle文档:Retrieving Class Objects
如果对象的实例可用,那么获取其Class的最简单方法是调用Object.getClass()。当然,这仅适用于所有都继承自Object的引用类型。一些例子如下。
Class c = "foo".getClass();