On Wed, 20 May 2026 18:50:49 GMT, Dan Smith <[email protected]> wrote:

>> ReflectionFactory.newConstructorForSerializatoin might bypass strict 
>> initialization. We should make sure the skipped classes in the constructor 
>> chain do not declare strict instance fields.
>> 
>> This updates the specification of jdk.unsupported's ReflectionFactory to 
>> reflect this behavioral update.
>> 
>> ---------
>> - [x] I confirm that I make this contribution in accordance with the 
>> [OpenJDK Interim AI Policy](https://openjdk.org/legal/ai).
>
> src/java.base/share/classes/jdk/internal/reflect/MethodHandleAccessorFactory.java
>  line 123:
> 
>> 121:      * @throws UnsupportedOperationException if the constructor is not 
>> from
>> 122:      *         a superclass, if the instantiated class is a value 
>> class, or if
>> 123:      *         any superclass between the declaring class of the 
>> constructor and
> 
> The "any superclass" rule should apply to value classes too.
> 
> (Here's how I described it in the serialization spec: "Then, in 
> superclass-to-subclass order, starting with the first superclass that 
> implements Serializable: if the class is a value class, or if it declares an 
> instance field with the ACC_STRICT_INIT field modifier (see [JVMS 
> 4.5](https://cr.openjdk.org/~dlsmith/jep401/jep401-20260518/specs/strict-fields-jvms.html#jvms-4.5)),
>  an InvalidClassException is thrown.")

Do you mean to reject any superclass that is an abstract value class here?

-------------

PR Review Comment: 
https://git.openjdk.org/valhalla/pull/2350#discussion_r3276518027

Reply via email to