同様のStackOverflow質問Way to specify multiple interfaces in Javaが直面する問題と同様の問題が発生していますが、具体的にはhttp://code.google.com/webtoolkit/articles/mvp-architecture.htmlで示されているGWT MVPサンプルフレームワークに適用されます。代わりにGWT MVPでHasClickHandlers以外のものを使用
public interface Display
{
HasClickHandlers getAddButton();
HasClickHandlers getDeleteButton();
HasClickHandlers getList();
...
}
:この例では
は、/Contacts/src/com/google/gwt/sample/contacts/client/presenter/ContactsPresenter.javaファイルで、インターフェースの表示は、次のメソッドが含まれていますこれらのボタンのうち、私はここでgetSuggestBox()メソッドを作りたいと思います。私のプレゼンターファイル内のバインド()メソッドでは、私は
getSuggestBox().addKeyDownHandler({...})
と
getSuggestBox().addSelectionHandler({...})
を起動し、これらのハンドラを作成したいと思います。これを行うには
は、私の最初のソリューションは、次のようになりますHasSearchHandlersインターフェイスを作成することでした。
public interface HasSearchHandlers extends HasKeyDownHandlers,
HasSelectionHandlers<SuggestOracle.Suggestion>{}
をし、その後方法
HasSearchHandlers getSuggestBox()
これを使用しようとしたが、失敗しましたこれまでのところ。私はどちらかの多型を使用してgetSuggestBoxを(実装するContactsViewファイルの私のバージョンで
private HasSearchHandlers box = new SuggestBox()
を言う)、と私はHasSearchHandlersにSuggestBoxをキャストすることはできませんすることはできません - 私はClassCastExceptionが取得します。 JREはHasSearchHandlersが空のインターフェイスであることを知っているので、SuggestBoxがこのキャストが機能するためにHasSearchHandlersを明示的に実装する必要はありません。 SuggestBoxクラスは、HasSearchHandlersインターフェイスにあるすべてのものを実装します。これで足りないの?
この記事の最初のリンクで代替として提示されたジェネリックインターフェイスは、同じことを「HasSearchHandlers」と呼ぶことなく同じことをするので、私には同様の難しさを与えました。この問題に照らして、最善の設計ステップは何ですか? GWT MVPフレームワークで「getSuggestBox()のような」メカニズムを実装して作成する方法は?