14

私の質問は、この 2 つの関数に何か違いがあるかどうかです。私は彼らが何か違うものを返すことを知っていますが、1つの要素の数が2番目のものと異なる可能性はありますか? 説明してみます。クラスの 1 つに TreeModel を実装して、JTree に基づいて PC 上のファイルを適切に表示しようとしました。ここにその一部があります:

public Object getChild(Object parent, int index) {
        File[] children = ((File) parent).listFiles();
        if(children == null || index < 0 || index >= children.length) {
            return null;
        }

        File result = new MyFile(children[index]);
        return result;
}

public int getChildCount(Object parent) {
        //---
        //String[] children = ((File)parent).list();
        File[] children = ((File)parent).listFiles();
        //---

        if(children == null) {
            return 0;
        }
        return children.length;
}

興味深いコードをマークしました。このコメント付きの 2 行を変更すると、NullPointerExceptionTreeModel: をロードした後に取得されることがありますjtree.setModel(treeModel);。このコメントを外しても問題はありません。ドキュメントを確認したところ、両方の方法で null を返すなど、異常なことは何もありません。ここで何が起こっているのですか?

4

2 に答える 2

9

どちらの方法も基本的には同じです。詳細については、 http://www.docjar.com/html/api/java/io/File.java.htmlを参照してください。

于 2013-03-12T18:58:22.463 に答える