【问题标题】:Given a Class object, how do i create an instance of a list of the class type that it references to [closed]给定一个 Class 对象,我如何创建它引用的类类型列表的实例 [关闭]
【发布时间】:2018-11-27 18:27:52
【问题描述】:

这个很难解释,但我会尽量保持简单。 假设我有一个名为 Car 的对象,并且我有一个接收以下内容的函数:

public void foo(Class<Car> type){
    // I want to create a list of this type, do something like this
    List<type> list = new List<type>
    // I know its not the way to do it but is there any way to do something like this

长话短说,我想创建一个汽车列表 是否可以给定 Class 对象?

【问题讨论】:

  • 是的,但您为什么要这样做?你到底想完成什么?
  • 这只是一个例子,我不想开始解释我项目中发生的一切,因为它会很长。
  • 所以Class&lt;Car&gt; 代表Car 类。如果您想要汽车列表,您已经有了已知类型:List&lt;Car&gt;,如果您想要汽车类别列表 (???),您可以使用 List&lt;Class&lt;Car&gt;&gt;,如果不知道它是 @987654326 @ 并想要一个泛型类型,请查看泛型方法。您需要提供更多关于您正在尝试做的事情的背景信息。
  • 是的,关键是我不知道它是一辆车,抱歉没有提到。
  • 您将需要提炼项目中正在发生的事情。编写这样的代码经常因为不可维护性而受到反对。

标签: java generics


【解决方案1】:

由于您提到您不知道实际类型(示例中为Car),我假设您正在寻找使用泛型。

  public <T> void foo(Class<T> t) {
    List<T> list = new ArrayList<T>();
  }

所以这是一个通用方法,因此您可以使用来自Class 对象的相同类型参数来创建您的列表。不过,我不确定你为什么想要这个。如果您已经拥有用于Class 对象的类型参数,那么您实际上并不需要Class 对象来创建您的列表。你可以这样做List&lt;T&gt; list = new ArrayList&lt;T&gt;()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-26
    • 1970-01-01
    • 2022-01-06
    • 2012-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多