【问题标题】:Confused about `toArray(T[] a)` method in java对 java 中的 `toArray(T[] a)` 方法感到困惑
【发布时间】:2015-01-11 06:34:59
【问题描述】:

List 有一个方法toArray 如:

<T> T[] java.util.ArrayList.toArray(T[] a)

在调用这个方法时,我应该创建一个新的实例并传递给它toArray(new MyElementClass[0])

可以这样定义吗:

<T> T[] java.util.ArrayList.toArray(Class<T>)

拨打toArray(MyElementClass[].class),能不能更有效?

【问题讨论】:

  • 可能是的,尽管您始终可以使用您需要的每种类型的零长度数组来保留许多常量。但这个问题是假设性的,因为您无法更改 API 类。
  • 它必须是 Class&lt;T&gt; 而不是 Class&lt;?&gt;
  • List 是接口,它没有名为“toArray”的方法。这个接口有一个叫做 ArrayList 的实现。只是为了不混淆其他人
  • 如果是&lt;T&gt; T[] toArray(Class&lt;T&gt;),那你就得叫它toArray(MyElementClass.class)

标签: java generics type-erasure


【解决方案1】:

会的。但是,为了向后兼容,给出了原始方法。

this

【讨论】:

    【解决方案2】:

    toArray 现在的方式是,它允许您重新使用一个数组(如果它有足够的大小,它将使用给定的数组),而不是总是需要分配一个新的。

    【讨论】:

      猜你喜欢
      • 2015-02-27
      • 2013-07-27
      • 2014-03-29
      • 2017-03-20
      • 2013-07-19
      • 2021-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多