make arrayList.toArray() 返回更具体的类型

2022-08-31 06:03:09

因此,通常会返回一种....但假设它是一个对象,我如何使返回一种类型而不是?ArrayList.toArray()Object[]ArraylistCustomtoArray()Custom[]Object[]


答案 1

喜欢这个:

List<String> list = new ArrayList<String>();

String[] a = list.toArray(new String[0]);

在Java6之前,建议编写:

String[] a = list.toArray(new String[list.size()]);

因为内部实现无论如何都会重新分配一个大小合适的数组,所以你最好提前完成。由于Java6是首选的空数组,请参阅.toArray(new MyClass[0])或.toArray(new MyClass[myList.size()])?

如果您的列表未正确键入,则需要在调用Array之前进行强制转换。喜欢这个:

    List l = new ArrayList<String>();

    String[] a = ((List<String>)l).toArray(new String[l.size()]);

答案 2

它实际上不需要返回,例如:-Object[]

    List<Custom> list = new ArrayList<Custom>();
    list.add(new Custom(1));
    list.add(new Custom(2));

    Custom[] customs = new Custom[list.size()];
    list.toArray(customs);

    for (Custom custom : customs) {
        System.out.println(custom);
    }

这是我的班级:-Custom

public class Custom {
    private int i;

    public Custom(int i) {
        this.i = i;
    }

    @Override
    public String toString() {
        return String.valueOf(i);
    }
}