将对象类型作为参数传递给方法?

3
我有以下方法,通过Id返回一个Person对象:
   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;
}

有没有一种方法可以使这个方法更加通用,以便我可以传递其他对象类型,例如 PlaceCost 等等?请注意,它们不继承相同的超类。

例如,我应该将 Person.class 作为方法参数传递吗?

1个回答

7

如果你想传递一个类对象并使你的方法通用,你可以这样做:

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;
}

如果你将Person.class作为cls参数传递,它将等同于你原来的代码。假设entityManager.find接受任何类并尝试返回该类的实例。
如果entityManager.find对接受的类具有一些限制,则需要在泛型类型参数<E>中指定它们。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接