<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<font size="4"><font face="monospace">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? <br>
<br>
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: <br>
<br>
public boolean equals(Object o) {<br>
if (this == o) return true;<br>
if (o instanceof ConcreteMethodHandleEntry m) {<br>
return kind() == m.kind()<br>
&& reference.equals(m.reference());<br>
}<br>
return false;<br>
}<br>
<br>
but I might write it this way with the language we have now:<br>
<br>
public boolean equals(Object o) {<br>
return (this == o) <br>
|| (o instanceof ConcreteMethodHandleEntry m<br>
&& kind() == m.kind()<br>
&& reference.equals(m.reference());<br>
}<br>
<br>
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. <br>
<br>
<br>
+1 from me. <br>
</font></font><br>
<div class="moz-cite-prefix">On 9/12/2022 9:16 AM, Dan Heidinga
wrote:<br>
</div>
<blockquote type="cite" cite="mid:CAJq4Gi5CGuGb7Wz9NvTLxEFG80dpbxm17sDJQaLRANMBGGwFcw@mail.gmail.com">
<div dir="ltr">I've updated the PR to include the following:
<div>* CE.adding/addingSymbols methods</div>
<div>* a List<CE> deduplicate(List<CE>) method that
removes duplicate entries from the List</div>
<div>* equals() methods to the ConcreteEntry subclasses</div>
<div><br>
</div>
<div>Let me know if this fits with the intended approach for the
jdk.classfile library.</div>
<div><br>
</div>
<div><a href="https://urldefense.com/v3/__https://github.com/openjdk/jdk-sandbox/pull/35__;!!ACWV5N9M2RV99hQ!Kb_eJX0-mhiFRcm4eyz7EFpo2YLLVrvuPNQUH3jcNbjMXCZ5k6pmqHYyNmqZQJKrg3pdDaHAMLWXNeT-_4M$" moz-do-not-send="true">https://github.com/openjdk/jdk-sandbox/pull/35</a><br>
</div>
<div><br>
</div>
<div>--Dan</div>
</div>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">On Wed, Aug 24, 2022 at 2:55
PM Brian Goetz <<a href="mailto:brian.goetz@oracle.com" moz-do-not-send="true" class="moz-txt-link-freetext">brian.goetz@oracle.com</a>>
wrote:<br>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div> <font size="4"><font face="monospace">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.</font></font><br>
<br>
<div>On 8/24/2022 9:22 AM, Dan Heidinga wrote:<br>
</div>
<blockquote type="cite">
<blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left:1px solid
rgb(204,204,204);padding-left:1ex"><br>
</blockquote>
<div><br>
</div>
<div>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.<br>
</div>
<div><br>
</div>
<div>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.</div>
</blockquote>
<br>
</div>
</blockquote>
</div>
</blockquote>
<br>
</body>
</html>