On 17/06/2015 8:39 AM, John Rose wrote:
What I'm suggesting is that a BC generator might emit a zero length name for a
non-anon class, leading to confusion when C.isAnon is called.
Is a zero-length "name" for a non-anonymous class valid? getSimpleName()
is specified to return "" for anonymous classes. Seems broken to allow
"" for non-anonymous.
David
– John
On Jun 16, 2015, at 5:09 AM, Vladimir Ivanov <vladimir.x.iva...@oracle.com>
wrote:
John,
That might be an issue here. Just as (String)null and (String)"" are distinct values in
Java, in the class file a CP ref of zero differs from a CP ref to a CONSTANT_Utf8 of the empty
string "". But the method Class.isAnonymousClass does not make a distinction between
those two cases, which might sometimes lead to confusion. I would view this as a bug in
Class.isAnonymousClass.
For non-top level classes, Class.getSimpleName calls Class.getSimpleBinaryName
which converts null to empty string, assuming it's an anonymous class. So,
callers should not see null values.
Best regards,
Vladimir Ivanov