0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Java】recordでCustom Constructorを実装する際に「Non-canonical record constructor must delegate to another constructor」のエラーが発生

Last updated at Posted at 2024-08-15

概要

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]);
    }
}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?