概要
JavaのrecordでCustom Constructorを実装する際、【Java】コンストラクタの記事にあるように、classと同様の形式で以下のように実装したとします。
public record LatLonResponse(double lat, double lon) {
// Custom Constructorの実装
public LatLonResponse(Double[] lonLat) {
this.lat = lonLat[1];
this.lon = lonLat[0];
}
}
ただ、この実装だとNon-canonical record constructor must delegate to another constructor
というエラーになります。ではどう実装すればよいかのメモ書きです。
前提
- 今回使用したJDKは
Corretto-21.0.3.9.1
になります。
対応
Using recordの記事で解説されている通り、Custom Constructorにおいてもcanonical(標準)なコンストラクタを呼んであげる必要があります。canonicalなコンストラクタは以下のようにthis
で呼びます。
public record LatLonResponse(double lat, double lon) {
// Custom Constructorの実装
public LatLonResponse(Double[] lonLat) {
this(lonLat[1], lonLat[0]);
}
}