相反存储字符串的整数通用ArrayList?

时间:2018-04-30 02:03:31

标签: java arrays generics arraylist casting

所以这就是我想要做的。我有一个名为

的泛型类
public class SortsTextFile<T extends Comparable<T>>

存储名为

的ArrayList
private ArrayList<T> listFromFile = null;

因此,当需要从给定的文本文件中获取元素时,此代码将运行

try (BufferedReader in = new BufferedReader(
                                 new FileReader(listInfo)))
    {
        listFromFile = new ArrayList<>();

        String line = in.readLine();
        while (line != null)
        {
            String[] columns = line.split(FIELD_SEP);

            for (int i = 0; i < columns.length; i++)
            {
                listFromFile.add((T) columns[i]);
            }
            line = in.readLine();
        }
    }

这段代码运行正常,但正如标题所暗示的那样,在这种情况下,它们不是正确地被转换为类型为Integer的类型T,而是从文本文件中保留为类型字符串并作为字符串添加到数组中而不是整数。

我该如何解决这个问题?谢谢!

1 个答案:

答案 0 :(得分:3)

T只需ComparableStringComparable。此外,您要添加的columnsString[]。如果您需要Integer,则必须自己转换。假设这些值实际上是积分的,那么最简单的修复就是改变

listFromFile.add((T) columns[i]);

listFromFile.add((T) Integer.valueOf(columns[i]));

我不确定演员是否必要。另外,我想

public class SortsTextFile<T extends Comparable<T>>

应该是

public class SortsTextFile<T extends Comparable<? super T>>