在java中创建一个通用数组

时间:2014-04-17 19:21:49

标签: java arrays generics

我正在尝试在java中创建一个通用数组 - 我遇到了一些问题 - 如何创建一个大小为6且内部大小为byte []和整数的元组数组?

由于

private Tuple<byte[], Integer>[] alternativeImages1 = new Tuple<byte[], Integer>[6];

class Tuple<F, S> {

    public final F first;
    public final S second;

    public Tuple(final F first, final S second) {
        this.first = first;
        this.second = second;
    }

    @Override
    public boolean equals(final Object o) {
        if (this == o)
            return true;
        if (o == null || getClass() != o.getClass())
            return false;

        final Tuple tuple = (Tuple) o;
        return this.first == tuple.first && this.second == tuple.second;
    }

    @Override
    public int hashCode() {
        int result = this.first != null ? first.hashCode() : 0;
        result = 31 * result + (this.second != null ? second.hashCode() : 0);
        return result;
    }
}

1 个答案:

答案 0 :(得分:7)

你可以使用原始类型:

Tuple[] array = new Tuple[6];

或者您可以进行未经检查的转换:

Tuple<byte[], Integer>[] array = (Tuple<byte[], Integer>[])new Tuple[6];

// or just this because raw types let you do it
Tuple<byte[], Integer>[] array = new Tuple[6];

或者你可以改用List:

List<Tuple<byte[], Integer>> list = new ArrayList<Tuple<byte[], Integer>>();

我建议改用List。

在前两个选项之间进行选择,我建议不经检查的转换,因为它将为您提供编译时检查。但是,如果你在其中添加了一些其他类型的元组,它将不会抛出ArrayStoreException。