【问题标题】:Can we have a field implementing two or more interfaces in Java? [duplicate]我们可以让一个字段在 Java 中实现两个或多个接口吗? [复制]
【发布时间】:2016-07-03 16:05:06
【问题描述】:

是否可以创建这样的类...

public class Container implements Serializable {
  private final (Map<Object,Object> & Serializable) map;
  public Container( (Map<Object,Object> & Serializable) map) {
    super();
    this.map = map;
  }
  ....
}

基本上,我们不想将 map 实现绑定到任何类,并确保实现同时实现 Map 和 Serializable 接口。

非常感谢您的任何想法和帮助。

【问题讨论】:

  • 请注意 Map 实现 Serializable 的事实并不意味着映射是可序列化的 - 您也需要所有键和值也可序列化(带有一点“s” - 简单实现Serializable 也不足以保证可串行化)。
  • 是否可以不在类中引入新的类型参数?我不想让实现特定类型影响容器的类型...@Cootri

标签: java generics collections


【解决方案1】:

您可以定义具有所需类型边界的泛型类型参数:

class Container<E extends Map<Object,Object> & Serializable> implements Serializable {

    private final E map;

    public Container (E map) 
    {
        super();
        this.map = map;
    }

}

【讨论】:

  • 感谢您的示例。但是,如果我们不想要默认构造函数怎么办?我尝试了以下操作,但似乎效果不佳...` class Container & Serializable> implements Serializable { private final E map;公共容器(E地图){超级(); this.map = 地图; } public Container() { this(new HashMap()); } }`
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-20
  • 1970-01-01
  • 1970-01-01
  • 2013-11-02
  • 2012-03-30
  • 1970-01-01
相关资源
最近更新 更多