我可以为SuggestBox和MultiWordSuggestOracle找到的所有信息表明,为建议框设置oracle的唯一方法是在构造它时。我不认为这是有道理的,因为有一个默认构造函数不接受oracle并为你创建一个,可能是空的。这没什么好处的。我正在寻找的是像setSuggestOracle(MultiWordSuggestOracle)
或addToSuggestOracle(String)
这样的方法,但我在文档中找不到任何建议如何做到这一点。
答案 0 :(得分:8)
在SuggestOracle
创建后,您似乎无法更改SuggestBox
的实例,但您可以使用SuggetBox::getSuggestOracle()
访问它。从那里你必须转向实现类来对其进行更改; SuggestOracle
基类本身不提供任何内容。如下所示:
SuggestOracle oracle = new MultiWordSuggestOracle();
SuggestBox box = new SuggestBox(oracle);
try {
MultiWordSuggestOracle multiWordOracle = (MultiWordSuggestOracle)box.getOracle();
multiWordOracle.add("This awesome suggestion.");
} catch (ClassCastException e ) {
// the oracle was not what you thought it was
}