私の質問は、この 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 行を変更すると、NullPointerException
TreeModel: をロードした後に取得されることがありますjtree.setModel(treeModel);
。このコメントを外しても問題はありません。ドキュメントを確認したところ、両方の方法で null を返すなど、異常なことは何もありません。ここで何が起こっているのですか?