0

我正在尝试在 GWT 应用程序中创建以下结构,尽管这确实是一个 Java 问题:

  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 回答