【问题标题】:generic interface handle both version通用接口处理两个版本
【发布时间】:2018-03-05 15:15:35
【问题描述】:

我有以下课程:

public class Server extends ServerVersion1 {
   @Id
   private String id;
   public String getId() { return id; }
   public void setId(String id) { this.id = id; }
}

public interface ServerRepository extends MongoRepository<Server,String> {

}

我创建了 ServerVersion2,如何编写一个泛型类来处理这两个版本。

谢谢

【问题讨论】:

  • 您的问题不清楚 - 您可以添加更多上下文吗?
  • 将 ServerVersion2 添加到 mongo 中的现有服务器集合(表)中。

标签: java mongodb generics inheritance interface


【解决方案1】:

创建一个 ServerVersion1 和 ServerVersion2 将扩展的抽象父类。将两个子类中重复的代码移至抽象父类。现在,在您想要处理任一 ServerVersion 类的对象的代码中,使用对这个抽象父类的引用。

【讨论】:

  • 我无法访问ServerVersion1,我该怎么办?
  • 我明白了。然后我会尝试按如下方式组织它:使用您的 Server 类作为包含与两个服务器版本相关的所有内容的父类。然后创建 2 个子类,例如 ServerV1 和 ServerV2。在您的程序中,使用 Server(甚至 ServerVersion1)作为您希望能够处理 ServerV1 或 ServerV2 对象的数据类型。由于这些对象是扩展 Server 的类的实例化,因此它们通过了“Is-A”测试并且应该可以工作。
  • 您是否将集合作为参数传递给您的调用方法?
  • 您可以发布该方法的当前签名吗?我想你只需要 作为参数的类型。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-22
  • 2015-06-27
  • 1970-01-01
  • 2012-05-28
  • 2021-06-21
  • 1970-01-01
相关资源
最近更新 更多