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