On Wed, 31 Mar 2021 21:02:51 GMT, Daniel Fuchs <dfu...@openjdk.org> wrote:

>> This RFE proposes to extend the MXBean framework to define a mapping to 
>> records.
>> 
>> The MXBean framework already defines a mapping of `CompositeType` to plain 
>> java objects. Records are a natural representation of CompositeTypes. A 
>> record can be easily reconstructed from a `CompositeData` through the record 
>> canonical constructor. A clear advantage of records over plain java objects 
>> is that the canonical constructor will not need to be annotated in order to 
>> map composite data property names to constructor parameter names.
>> 
>> With this RFE, here is an example comparing coding a composite type 
>> `NamedNumber` that consists of an `int` and a `String`, using records and 
>> using a plain java class. In both case, the `CompositeType` looks like this:
>> 
>> CompositeType(
>>     "NamedNumber",                      // typeName
>>     "NamedNumber",                      // description
>>     new String[] {"number", "name"},    // itemNames
>>     new String[] {"number", "name"},    // itemDescriptions
>>     new OpenType[] {SimpleType.INTEGER,
>>                     SimpleType.STRING}  // itemTypes
>> );
>> 
>> The plain Java class needs a public constructor annotated with 
>> `@ConstructorParameters` annotation:
>> 
>> public class NamedNumber {
>>     public int getNumber() {return number;}
>>     public String getName() {return name;}
>>     @ConstructorParameters({"number", "name"})
>>     public NamedNumber(int number, String name) {
>>         this.number = number;
>>         this.name = name;
>>     }
>>     private final int number;
>>     private final String name;
>> }
>> 
>> And the equivalent with a record class: 
>> 
>> public record NamedNumber(int number, String name) {}
>
> Daniel Fuchs has updated the pull request incrementally with two additional 
> commits since the last revision:
> 
>  - minor style issue
>  - minor style issue

Thanks for making the change.  The spec change looks good to me.

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

PR: https://git.openjdk.java.net/jdk/pull/3201

Reply via email to