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

Posted

技术标签:

【中文标题】将对象类型作为参数传递给方法?【英文标题】:Passing Object Type into method as a Parameter? 【发布时间】:2022-01-22 10:45:04 【问题描述】:

我有以下方法通过 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;

有没有办法让这个方法更通用,以便我可以传入其他对象类型,例如 Place , Cost 也是?请注意,它们不会继承相同的超类。

例如我应该通过吗? Person.class 作为方法参数等?

【问题讨论】:

【参考方案1】:

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

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 对其接受的类的特征有一些限制,则需要在泛型类型参数&lt;E&gt; 中指定它们。

【讨论】:

以上是关于将对象类型作为参数传递给方法?的主要内容,如果未能解决你的问题,请参考以下文章

将 shared_ptr 作为参数传递给接受类类型对象的函数

Terraform - 将类型对象作为参数传递给 Azure 模板部署

如何将向量作为参数传递给另一个向量?

是否可以将类类型的对象作为参数传递给另一个类,这样我就不必再次初始化? (Python 3.x)

当我们将对象作为参数传递给方法时,为啥会调用复制构造函数?

为啥我们将字符串数组作为参数传递给 main() 方法,为啥不传递任何集合类型或包装类型或原始类型?