In general, altering or bypassing the accessibility of classes, methods, or fields violates the encapsulation principle and could lead to run-time errors. For records the case is even trickier: you cannot change the visibility of records's fields and trying to update the existing value will lead to ``++IllegalAccessException++`` in runtime. 


This rule raises an issue when reflection is used to change the visibility of a record's field, and when it is used to directly update a record's field value.

== Noncompliant Code Example

----
record Person(String name, int age) {}

Person person = new Person("A", 26);
Field field = Person.class.getDeclaredField("name");
field.setAccessible(true); // secondary
field.set(person, "B"); // Noncompliant
----

== See

* https://docs.oracle.com/javase/specs/jls/se15/preview/specs/records-jls.html#jls-8.10[Records specification]
