RFR: JDK-8277451: java.lang.reflect.Field::set on static field with invalid argument type should throw IAE [v2]
Alan Bateman
alanb at openjdk.java.net
Mon Nov 22 20:23:08 UTC 2021
On Mon, 22 Nov 2021 20:01:50 GMT, Mandy Chung <mchung at openjdk.org> wrote:
>> java.lang.reflect.Field::set on static field with invalid argument type should throw IAE. But this regression is introduced by JEP 416 throwing NPE instead.
>>
>> `ensureObj` is called as the first check of the `Field::set` method to ensure the receiver object is checked first before the argument. For a Field instance with write-access, the method handle invocation will check the receiver. Therefore for `Field::setXXX` methods to set a primitive value, `ensureObj` is only called if it's a read-only Field instance to ensure IllegalArgumentException is thrown first before IllegalAccessException to keep the existing behavior to avoid duplicated receiver check.
>
> Mandy Chung has updated the pull request incrementally with one additional commit since the last revision:
>
> Improve the exception message when the type is not available
Marked as reviewed by alanb (Reviewer).
-------------
PR: https://git.openjdk.java.net/jdk/pull/6490
More information about the core-libs-dev
mailing list