0

これは実際にはJavaの問題ですが、GWTアプリケーションで次の構造を作成しようとしています:

  1. ChatComponentマーカー インターフェイスであり、メソッドはありません。を構成できるコンポーネントをマークするためのものChatMessageです。
  2. すべてのチャット コンポーネントはウィジェットですが、正確にどのようなものかは不明です。チャット コンポーネントが必要に応じて拡張できるようにしたいと考えています。
  3. ただし、すべてのチャット コンポーネントを Widget の拡張として、コードに反映させたいと考えています。

基本的に言いたいことは

List<Widget> list = new ArrayList<>();
list.add(new ChatComponent());

ここでの問題は明らかです。インターフェイスはクラスを拡張できず、抽象クラスも使用できません。なぜなら、コンポーネント クラスが必要なものを何でも拡張できるようにしたいからです。Widgetしたがって、抽象でサブクラス化してから拡張することはできません。

これを行うためのきちんとした方法はありますか?クラス階層では実行できず、ジェネリックとワイルドカードを使用したメソッドでのみ実行できる場合、それは私にとってもうまくいきますが、それを行う良い方法も本当にわかりませんでした。

4

1 に答える 1

0

一般的なワイルドカードを使用するとうまくいく場合があります。ChatComponent インターフェイスを作成します。

List<? extends ChatComponent> list = new ArrayList<>();
list.add(new MyChatComponent());

MyChatComponent.class は Widget であり、ChatComponent インターフェイスを実装する必要があります。

于 2013-06-28T17:33:38.430 に答える