代码之家  ›  专栏  ›  技术社区  ›  Alex

是否改为存储字符串的整数的通用ArrayList?

  •  1
  • Alex  · 技术社区  · 7 年前

    这就是我想做的。我有一个泛型类叫做

    public class SortsTextFile<T extends Comparable<T>>
    

    存储一个名为

    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();
            }
        }
    

    这段代码运行得很好,但正如标题所示,它们不是正确地转换为类型T(在本例中为整数),而是作为文本文件中的类型字符串,并作为字符串而不是整数添加到数组中。

    如何修复此问题?谢谢

    1 回复  |  直到 7 年前
        1
  •  3
  •   Elliott Frisch    7 年前

    T 仅要求是 Comparable String 可比较的 。此外,您正在添加 columns 这是一个 String[] .如果你愿意 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>>