在我的应用程序中,我有十几个地方需要显示国家建议框。建议框的所有代码(包括自定义SuggestOracle
的创建,它的初始化和各种处理程序)占用了大约100行,并且在整个项目中复制它对我来说似乎相当硬。
所以我决定编写一个自定义CountrySuggestBox
扩展SuggestBox
包含自定义SuggestOracle
的构造,并自行完成所有点击/键处理。在此之后,我计划在@UiFiled(provided=true) CountrySuggestBox = new CountrySuggestBox(countryList);
的行中写一些内容并完成它。但为此,我还需要CountrySuggestBox来实现LeafValueEditor<Country>
,这是我无法做到的,因为SuggestBox实现了HasText,并且这些接口彼此不“相似”。
那么我怎样才能使CountrySuggestBox
成为国家/地区类型属性的编辑器,而无需在使用它的类中编写自定义编辑器方法。
答案 0 :(得分:3)
首选合成而不是继承。
让CountrySuggestBox
扩展Composite
(或简单地实现IsWidget
)并打包SuggestBox
。
然后,您可以将其设为LeafValueEditor<Country>
或IsEditor<LeafValueEditor<Country>>
(以及TakesValue<Country>
或HasValue<Country>
)