3
  private void activateRecords(long[] stuff) {
    ...
    api.activateRecords(Arrays.asList(specIdsToActivate));
  }

Arrays.asListへのこの呼び出しはLongsのリストを返すべきではありませんか?代わりに、List<long[]>

public static <T> List<T> asList(T... a)

メソッドのシグネチャは結果と一致しており、varargsは配列全体をリストにスローします。それはと同じですnew ArrayList(); list.add(myArray) そして、はい、私はそれがこのように使用されることを意図していることを知っています:Arrays.asList(T t1, T t2, T t3)

私が得ているのは、varargs形式の代わりだと思いますが、コンテンツを取得して個別に配置する古いasListメソッド(少なくともこれが以前の方法だと思います)を使用できないのはなぜですか?リスト?これを行う他のクリーンな方法はありますか?

4

2 に答える 2

7

これは、long[] と Long[] が異なる型であるためです。

最初のケースでは T は long[] で、2 番目のケースでは T は Long です。

これを修正する方法は?そもそもlong[]を使わない?

于 2008-11-13T00:42:57.793 に答える
5

オートボクシングはアレイでは実行できません。次のことが許可されています。

private List<Long> array(final long[] lngs) {
    List<Long> list = new ArrayList<Long>();
    for (long l : lngs) {
        list.add(l);
    }
    return list;
}

また

private List<Long> array(final long[] lngs) {
    List<Long> list = new ArrayList<Long>();
    for (Long l : lngs) {
        list.add(l);
    }
    return list;
}

(反復可能な型が異なることに注意してください)

例えば

Long l = 1l;

だがしかし

Long[] ls = new long[]{1l}
于 2008-11-13T00:55:58.890 に答える