当前位置: 首页 > 面试题库 >

基于参数的类的新实例

有宏峻
2023-03-14
问题内容

我正在尝试使函数采用可扩展的多个类之一Foo,并在其Class中返回该对象的新实例,而不是的新实例Foo

我确定这是一个常见问题。有没有好的例子?

我从未使用过一个类作为输入参数,只使用了一个类的成员。根据我的搜索,这应该可行吗?


问题答案:

您是将Class对象作为参数传递还是作为的子类传递Foo

在这两种情况下,解决方案都几乎相同,您可以在Class对象上使用newInstance方法。

/**
 * Return a new subclass of the Foo class.
 */
public Foo fooFactory(Class<? extends Foo> c)
{
    Foo instance = null;
    try {
        instance = c.newInstance();
    }
    catch (InstantiationException e) {
        // ...
    }
    catch (IllegalAccessException e) {
        // ...
    }
    return instance; // which might be null if exception occurred,
                     // or you might want to throw your own exception
}

如果需要构造函数参数,则可以使用Class
getConstructor方法,然后从那里使用Constructor
newInstance(…)方法。



 类似资料:
  • 我有Java接口类。 我有另一个spec builder方法: 以上规范可用于创建客户端: 可用于调用下游客户端获取数据: 我创建了以下客户端规范静态映射:“ContentType”->DownstreamClientSpec 现在我有了一个处理程序方法: 除了contentType的switch语句和特定的客户端创建逻辑之外,我如何基于contentType获得客户端?使用Guice动态绑定特定

  • 问题内容: 标准对象工厂可能如下所示: 是否可以设置绑定以便为我完成切换,即我要做的就是调用getInstance或inject?我当时在看辅助注射,但这似乎是另外一个话题:https : //code.google.com/p/google- guice/wiki/AssistedInject 问题答案: 听起来您正在寻找,这是多重绑定功能的一部分。请注意,您仍然需要放入某种工厂接口或其他工厂接

  • 我试着写一个小函数,它接受两个列表,并根据另一个列表的元素对一个进行排序。所以类似于: 将产生一个排序列表。 然而,可能是一个不同的列表,比如整数、浮点数或其他列表。理想情况下,我希望我的程序能够获取我抛出的任何列表,根据

  • 我已经阅读了spring批处理文档几次,并搜索了一种基于作业参数跳过作业步骤的方法。 我希望能够跳过步骤4,如果希望通过指定在工作Paramaters。 我能找到的唯一相关的问题是如何根据应用程序参数--spring boot java config选择运行哪个spring批处理作业 这似乎表明应该创建两个不同的作业上下文,并在批处理步骤定义之外做出决定。 但是,必须创建4个单独的上下文文件,以便

  • 本文向大家介绍php基于session实现数据库交互的类实例,包括了php基于session实现数据库交互的类实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php基于session实现数据库交互的类。分享给大家供大家参考。具体如下: 希望本文所述对大家的php程序设计有所帮助。

  • 本文向大家介绍JavaScript实现基于Cookie的存储类实例,包括了JavaScript实现基于Cookie的存储类实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JavaScript实现基于Cookie的存储类。分享给大家供大家参考。具体分析如下: 通过这个JS类,你可以象使用session一样使用cookie,非常简单了! 希望本文所述对大家的javascript程序设计有所