There are two main problems with having a component of a record be an array.
By default, the generated equals
and hashCode
will just call equals
or
hashCode
on the array. Two distinct arrays are never considered equal by
equals
even if their contents are the same. The generated toString
is
similarly not useful, since it will be something like [B@723279cf
.
Arrays are mutable, but records should not be mutable. A client of a record with an array component can change the contents of the array.
Instead of an array component, consider something like ImmutableList<String>
,
or, for primitive arrays, something like ByteString
or ImmutableIntArray
.
Suppress false positives by adding the suppression annotation @SuppressWarnings("ArrayRecordComponent")
to the enclosing element.