我正在使用javafx应用程序中的tableview的静态观察列表。
public class TableData {
private static ObservableList<MyObject> data = FXCollections.observableArrayList();
public static ObservableList<MyObject> getData(){
return data;
}
}
当我加载新数据时,我尝试了几种方法来删除"旧数据"以发布内存,例如
TableData.getData().clear();
或
TableData.getData() = FXCollections.observableArrayList();
甚至
for(int i=0; i< TableData.getData().size(); i++){
MyObject mo = TableData.getData().get(i);
mo=null;
}
,但仍然没有记忆(使用Netbeans Analyzer检查(
Anyboy可以帮助吗?
您的问题与Javafx无关。通常,您应该了解Java中如何处理参考。您可以在此处或这里找到介绍。
代码如您的示例(TableData.getData() = FXCollections.observableArrayList();
(,请勿更改静态集合的内部内容。在此之后,将其定义为静态值是一种反模式。
根据您的问题和示例,我认为您是Java语言的新手。我更喜欢阅读一般Java书(请参阅此链接以获取良好的概述(。这将帮助您了解样本中的一般问题。
通常,您在所有面向对象的语言中都有相同的行为,因此即使是关于OOD的书/教程也可能是一个好主意:(