【问题标题】:JAVA: Add string (file.getAbsolutePath()) to list (List)JAVA:将字符串 (file.getAbsolutePath()) 添加到列表 (List)
【发布时间】:2013-09-28 15:01:36
【问题描述】:

我有一个非常简单的代码:

private final JFileChooser chooser;
private List list, fileList;

//some codes

int returnVal = chooser.showDialog(CountdownTimer.this, "Select Files");

    if(returnVal==JFileChooser.APPROVE_OPTION) {
        File[] file = chooser.getSelectedFiles();

        System.out.println("Selected files:");
        for(int i=0; i<file.length; i++) {
            list.add(file[i].getName());
            fileList.add(file[i].getAbsolutePath());
            System.out.println("list["+i+"] "+file[i].getName());
            System.out.println("fileList["+i+"] "+file[i].getAbsolutePath());
        }

    }
    else System.out.println("No selection.");

我需要两个列表。第一个将用于查看(和删除)目的,而另一个 用于压缩所有选定的文件。在压缩文件中,我需要每个文件的位置和名称。但由于某种原因,这条线

    fileList.add(file[i].getAbsolutePath());

生成错误“线程“AWT-EventQueue-0”java.lang.NullPointerException中的异常”而行

    list.add(file[i].getName());

做得很好。我将 List list 用于 GUI,List fileList 用于邮政编码。

【问题讨论】:

  • 您是否已将 list 和 fileList 都初始化为指向 List 对象?

标签: java file list


【解决方案1】:

我看不到任何地方 fileList(或 list)被这样实例化:

fileList = new ArrayList<String>();

提示:您应该认真查看 Java 泛型并像这样声明您的列表:

private List<String> list, fileList;

使其成为只能包含 String 对象的类型化 List

【讨论】:

  • 如果我这样做,那么我将不得不将 fileList 更改为 ArrayList。我需要我的列表是动态的。另外,我没有对其他运行良好的列表执行此操作。这样做:private List 列表,fileList 也会产生错误。
【解决方案2】:

private List list, fileList; // 这里是你需要初始化List的问题。

用下面的代码替换

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

private List<String> fileList new ArrayList<String>();

【讨论】:

  • 它会生成一个错误,提示 List 类型不是通用的;它不能用参数 参数化
【解决方案3】:

我所做的是:

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

【讨论】:

    猜你喜欢
    • 2011-09-10
    • 1970-01-01
    • 1970-01-01
    • 2010-12-11
    • 1970-01-01
    • 1970-01-01
    • 2017-10-09
    • 2018-08-12
    • 2014-07-05
    相关资源
    最近更新 更多