首页 > 解决方案 > 将集合中的元素类型传递给初始化 ArrayList(Java)的函数?

问题描述

我想要一个函数,它接受一个参数,然后在 ArrayList 中设置 E ,其中 E 是此集合中元素的类型。因此,显示我想要做的最简单的代码就是这样,其中 E 是我不知道的。

private void createArray(E dataType) {
    ArrayList<dataType> list = (ArrayList<dataType>) message.getArray();
}

这是可能吗?我试图通过查看 ArrayList 类来找到答案,但我对 Java 没有太多经验。

编辑:我不确定我的问题是否足够清楚......我不需要传递变量 dataType。当我执行初始化 ArrayList 的行时,我需要变量 dataType 成为 <> 中的内容。我找到了以下答案:Pass class type as parameter to use in ArrayList? 但这对我不起作用。我需要使用数组列表中的元素并调用仅适用于该类的方法...

    private <T> void createModel(String SQLcomm, Class<T> dataType, DefaultTableModel table) {
    Parcel parc = SQLtask(SQLcomm, "array");
    ArrayList<T> list = (ArrayList<T>) parc.getData();

    for (T t: list) {
        Vector<Object> newRow = t.getinfo();    //can't do t.getinfo()?
        table.addRow(newRow);
    }

标签: javaarraylist

解决方案


可以,但必须将数据类型作为类参数传递,这在 java 中称为泛型(有关泛型的更多信息,这里是官方 java 文档的链接)示例:

// E your data type
public class A<E> {
    //Maybe you get data from database (ResultSet)
    public void createArray(ResultSet message, String index) throws SQLException {
        ArrayList<E> list = (ArrayList<E>) message.getArray(index);
        //the rest of the code...
    }
}

有关处理数组的更多信息,参阅官方文档。


推荐阅读