Trust final fields in records
mandy.chung at oracle.com
Fri Jun 12 16:53:51 UTC 2020
No change on setAccessible that will succeed on any fields as it is today.
The proposed change is that final fields of a record are not modifiable
(i.e. no reflective write access) and Field::set on a Field object with
no reflective write access will throw IllegalAccessException.
Today Field::set behavior:
- Static final fields have no write access
- Non-static final fields in a hidden class have no write access
- Non-static final fields on normal classes (that are not records) have
reflective write access
No change to the above.
On 6/12/20 4:35 AM, Johannes Kuhn wrote:
> Jackson will break. It loves to call setAccessible on everything -
> even when explicitly disabled .
> The other thing to consider is if setAccessible should fail, or if it
> should still allow read access, similar to static final fields.
> - Johannes
> : https://github.com/FasterXML/jackson-databind/issues/2760
> On 12-Jun-20 12:57, Brian Goetz wrote:
>> If the fields cannot be made accessible, this means that 3rd party
>> serialization frameworks will choke on records, right?
>> Sent from my iPad
>>> On Jun 12, 2020, at 5:10 AM, Chris Hegarty
>>> <chris.hegarty at oracle.com> wrote:
>>>> On 12 Jun 2020, at 02:52, Mandy Chung <mandy.chung at oracle.com> wrote:
>>>> Hi Christoph,
>>>> I can sponsor your patch. I create
>>> This is great. I remember thinking (saying?) similar when we settled
>>> on record serialization not needing to muck around with field
>>> stuffing (among the motivating factors for how records deserialize).
>>> This is a great step forward, nice to see it progressing.
More information about the hotspot-runtime-dev