On Tue, 29 Jun 2021 05:47:03 GMT, Tagir F. Valeev <[email protected]> wrote:
>> Roger Riggs has updated the pull request incrementally with one additional
>> commit since the last revision:
>>
>> Add test synchronizing on return value of Objecst.newIdentity()
>
> Probably it would be better to have an inner class named like `Identity`
> instead of anonymous class? When debugging or analyzing memory dumps, it
> would be more user-friendly to see `Objects$Identity` than `Objects$1`.
>
> Probably, not the part of this feature request, but it would be nice to add
> another method with string parameter, like `Objects.newIdentity("MY
> SENTINEL")`. The string should be stored in the field and returned from
> toString(). Again, this would make it easier to find where the object comes
> from during debugging or memory dump analysis. For the record, here's what we
> have in IntelliJ IDEA sources (Apache 2.0 licensed):
>
>
> public final class ObjectUtils {
> private ObjectUtils() { }
>
> ...
>
> /**
> * Creates a new object which could be used as sentinel value (special
> value to distinguish from any other object). It does not equal
> * to any other object. Usually should be assigned to the static final
> field.
> *
> * @param name an object name, returned from {@link #toString()} to
> simplify the debugging or heap dump analysis
> * (guaranteed to be stored as sentinel object field). If
> sentinel is assigned to the static final field,
> * it's recommended to supply that field name (possibly
> qualified with the class name).
> * @return a new sentinel object
> */
> public static @NotNull Object sentinel(@NotNull @NonNls String name) {
> return new Sentinel(name);
> }
>
> private static final class Sentinel {
> private final String myName;
>
> Sentinel(@NotNull String name) {
> myName = name;
> }
>
> @Override
> public String toString() {
> return myName;
> }
> }
@amaembo Good suggestion for the Valhalla API and implementation. Today, only
the hashCode() identifies an Object.
For JDK17, it will continue to be a raw Object() instance.
-------------
PR: https://git.openjdk.java.net/jdk17/pull/112