如何管理版本化对象构造函数?

时间:2017-02-01 08:36:46

标签: java json gson

我们目前正在使用java开发一个项目,我们公开了REST API 正如我们正在研究OO语言并以json格式导出内容,
我们搜索了一个库,以支持将对象转换为json并支持版本控制。

我们决定使用gson,因为它为版本控制提供了简单的注释。

我们面临的问题是API中的某个字段(让我们说板块)被删除而另一个字段(比如驱动程序)被删除,它们属于同一类型。 我们如何在这个坐标中构建构造函数,其中签名是相同的?

我想出的解决方案如下:

汽车:

...
@Since(1)
@Until(2)
private String plate;
@Since(2)
private String driver;

// v1
public Car(String plate){
  this(plate, null);
}

// v2
public Car(String plate, String driver){
  this.plate = plate;
  this.driver = driver;
}
...

为了创建v2 Car,我只需要驱动程序字段,我将按如下方式执行:

Car car = new Car(null, driver);

我不是传递null的粉丝(特别是在ctors中),有没有更优雅的方式来做这个?

0 个答案:

没有答案