我正在研究JFaceEclipse 开发。我制作了一个插件来充当ComboViewer. 该提供程序本质上将数据模型提供ArrayList为硬编码值。无论如何,我试图理解这种方法。  
我ComboViewer通过comboViewer.setInput(list)方法设置模型。
在按下按钮时,我调用另一个对象的方法来更新list我传递input的ComboViewer(添加另一个元素)并且我调用comboViewer.refresh以反映更改,但没有任何反应。  
结果是:
我需要调用comboViewer.setInput(list) 更新后的列表来查看我的 UI 组合中数据的变化(即之前的添加)。我发现comboViewer.refresh只有当我将comboViewer' 作为输入传递Object并对其进行修改时,它才会反映任何更新。即如果我这样做:  
List<SomeObject> data = ((List<SomeObject>)(comboViewer.getInput()));  
data.add(new SomeObject("aaa","cccc"));  
comboViewer.refresh();    
只有这样,数据才会被刷新。但我不明白使用这些 API 的正确方法是什么。
我是否应该持有并修改我在setInput方法中传递的对象?感觉我不应该这样做。那么这样做的目的是refresh什么?  
更新提供给Viewers 的数据的正确方法是什么?