我遇到以下问题:如何获取ObservableList的对象,我可以在其中编写自己的方法?
我有两个名为ActiveDateList和MainFrame的类。 ActiveDateList(写成单例)正在扩展Arraylist并保存当前活动的“MyDate”。
ActiveDateList:
public class ActiveDateList extends ArrayList<MyDate>{
private static ActiveDateList instance;
private ActiveDateList(){}
public static ActiveDateList getInstance(){
if(instance == null){
instance = new ActiveDateList();
}
return instance;
}
...
public void addSorted(MyDate md){
...
}
}
大型机类是一个JavaFX的应用,其需要使用 “ActiveDateList” 的一个ObservableList。
代码这样做:
ActiveDateList activeDatelist = ActiveDateList.getInstance();
ObservableList<MyDate> observableADList = FXCollections.observableList(list);
但是这样做之后,我将无法访问每一个自写的方法,我在ActiveDateList,因为像“addSorted”无法通过ObservableList访问和每次我只调用activeDateList.addSorted(..)observableADList显然不会通知监听器。
我觉得我需要一个实现了ObservableList的类,而不是必须覆盖所有的方法,它只是使用ArrayList类中的方法,并让我有可能在其中编写自己的方法。
我很感谢每一个想法。
考虑添加一个'public static void addSorted(MyDate md,List list)'方法,并让您的当前非静态addSorted方法委托给它。 –
VGR
你的单身人士不是线程安全的。我建议为你的单例使用'enum',因为它带有singletons要求的特性(默认情况下是线程安全初始化,私有构造函数) - 检查[使用枚举实现Singleton](https://stackoverflow.com/questions/26285520 /实施-单例与-AN-枚举在-java的)。如果您更喜欢坚持'class',那么您应该实现[双重检查锁定](https://en.m.wikipedia.org/wiki/Double-checked_locking),如果单身人士将在多个线程中使用。这不是一个解决方案,只是一个建议。 –