Java - 强制实现扩展类的接口

时间:2013-06-28 15:46:01

标签: java class inheritance interface

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

  1. ChatComponent是一个标记界面,其中没有方法;它旨在标记可以包含ChatMessage
  2. 的组件
  3. 所有聊天组件都是小部件,但不知道究竟是什么类型的;我希望允许聊天组件扩展他们想要的任何内容。
  4. 但是,我还希望所有聊天组件都是Widget的扩展,并将其反映在代码中。
  5. 基本上我想要的是能够说

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

    现在问题很明显,接口不能扩展类,我不能使用抽象类,因为我希望组件类能够扩展他们想要的任何东西;所以我不能只在摘要中继承Widget,然后扩展它。

    有一种巧妙的方法吗?如果它不能在类层次结构中完成,但只能在带有泛型和通配符的方法中完成,那对我也有用,但我无法找到一个好的方法来做到这一点。

1 个答案:

答案 0 :(得分:0)

使用通用通配符可能会有效。创建一个ChatComponent接口。

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

MyChatComponent.class应该是一个Widget并实现ChatComponent接口。