Experience report
Brian Goetz
brian.goetz at oracle.com
Mon Sep 12 15:35:54 UTC 2022
These look good to from an API perspective. What was the user
experience like for things like injecting interfaces? Did the new
methods feel clumsy or natural?
I'll make a stylistic nit not because I want you to change your code,
but to remind the world that the language has changed. The way you write
this equals() method follows all the Effective Java recommendations:
public boolean equals(Object o) {
if (this == o) return true;
if (o instanceof ConcreteMethodHandleEntry m) {
return kind() == m.kind()
&& reference.equals(m.reference());
}
return false;
}
but I might write it this way with the language we have now:
public boolean equals(Object o) {
return (this == o)
|| (o instanceof ConcreteMethodHandleEntry m
&& kind() == m.kind()
&& reference.equals(m.reference());
}
To be clear, the code you wrote is OK, but I've gotten used to writing
it the second way and I find it more straightforward to read.
+1 from me.
On 9/12/2022 9:16 AM, Dan Heidinga wrote:
> I've updated the PR to include the following:
> * CE.adding/addingSymbols methods
> * a List<CE> deduplicate(List<CE>) method that removes duplicate
> entries from the List
> * equals() methods to the ConcreteEntry subclasses
>
> Let me know if this fits with the intended approach for the
> jdk.classfile library.
>
> https://github.com/openjdk/jdk-sandbox/pull/35
> <https://urldefense.com/v3/__https://github.com/openjdk/jdk-sandbox/pull/35__;!!ACWV5N9M2RV99hQ!Kb_eJX0-mhiFRcm4eyz7EFpo2YLLVrvuPNQUH3jcNbjMXCZ5k6pmqHYyNmqZQJKrg3pdDaHAMLWXNeT-_4M$>
>
> --Dan
>
> On Wed, Aug 24, 2022 at 2:55 PM Brian Goetz <brian.goetz at oracle.com>
> wrote:
>
> I'd say let's give this a try and see what we think of the
> resulting transformation code. It feels like right-sizing the
> overhead at first look.
>
> On 8/24/2022 9:22 AM, Dan Heidinga wrote:
>>
>>
>>
>> I took another pass through the Attributes that deal with Lists
>> of things and most cases are well handled by existing List
>> helpers. It's only the CE/CD cases that need data conversion and
>> would therefore benefit from additional methods to create their
>> lists.
>>
>> If we expect to be content with these 4 methods, then adding them
>> as static methods on ClassEntry seems reasonable. It makes them
>> easy to find and avoids a garbage "Helpers/Utils" class. If we
>> expect more of these methods (and I currently don't but that may
>> be lack of imagination), then a garbage class might be better.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/classfile-api-dev/attachments/20220912/12daf9ae/attachment-0001.htm>
More information about the classfile-api-dev
mailing list