在Java中将DefaultListModel转换为List

在Java中将DefaultListModel转换为List,java,list,swing,jlist,defaultlistmodel,Java,List,Swing,Jlist,Defaultlistmodel,我正在制作一个Swing应用程序,其中包括一个JList,列表中的所有对象都存储在DefaultListModel中。同时,我需要将列表传递给一个接收列表作为输入的方法。如何将DefaultListModel转换为列表 这是我得到的错误: The method computeSpending(List<Subscription>) in the type SubscriptionSpending is not applicable for the arguments (Default

我正在制作一个Swing应用程序,其中包括一个JList,列表中的所有对象都存储在DefaultListModel中。同时,我需要将列表传递给一个接收列表作为输入的方法。如何将DefaultListModel转换为列表

这是我得到的错误:

The method computeSpending(List<Subscription>) in the type SubscriptionSpending is not applicable for the arguments (DefaultListModel<Subscription>)
类型SubscriptionSpending中的方法computeSpending(列表)不适用于参数(DefaultListModel)
如何将DefaultListModel转换为列表

Arrays.asList(defaultListModel.toArray())


说明:

DefaultListModel
不是
List
的子类。因此不能直接将其作为
列表
参数传递。相反,您可以将参数类型更改为
ListModel
。例如:

computeSpending(ListModel<Subscription>)

对于我得到的第二个方法:SubscriptionSpending类型中的computeSpending(List)方法不适用于@pz7的参数(List),您无法将其“转换”为列表。你能做的最好的事情就是把它转换成一个列表。但是,最好的解决方案是忘记使用列表,将DefaultListModel传递给computeSpending(…)方法。DefaultListModel有一个与List.get(…)类似的
get(…)
方法,因此方法中没有逻辑更改。如果确实需要列表,则需要将数据从模型复制到列表中。但这不是一个好的解决方案,因为现在您有两个地方的数据引用。我的问题是,方法computeSpending(…)还需要使用List作为输入。仅供参考,因为Java 9是一个现代的替代方法。这将返回一个,一个未指定具体类的实例。
List<Subscription> asList = Arrays.asList(defaultListModel.toArray());