What is the motivation for defining fields as private and generating getters in records, as opposed to public fields?<div dir="auto"><br></div><div dir="auto">My reason for preferring public fields: Getters for immutable fields interact poorly with static analysis. e.g. null safety — it is not obvious that the following is null-safe:</div><div dir="auto"><br></div><div dir="auto">if (r.foo() != null) r.foo().bar();</div><div dir="auto"><br></div><div dir="auto">While the following can be statically deduced as null-safe when foo is a final field:</div><div dir="auto"><br></div><div dir="auto">if (r.foo != null) r.foo.bar();</div><div dir="auto"><br></div><div dir="auto">I’m sure public final fields open more opportunities for compiler optimization as well.</div>