Parameter reflection: parameters with "" as their name

Eric McCorkle eric.mccorkle at oracle.com
Thu Jan 24 11:58:53 PST 2013


Discussion moved from core-libs-dev to enhanced-metadata-spec-discuss

On 01/24/13 14:55, Eric McCorkle wrote:
> On 01/24/13 14:40, Jonathan Gibbons wrote:
>> On 01/24/2013 11:33 AM, Eric McCorkle wrote:
>>> The current version of the spec for parameter reflection, found here:
>>>
>>> http://cr.openjdk.java.net/~abuckley/8misc.pdf
>>>
>>> states that if a parameter has no name, then the reflection API should
>>> synthesize a name of the form "argN", where N is the index of the
>>> parameter.  It also states that if a MethodParameters attribute has a
>>> name index of 0, then it indicates a parameter with no name.
>>>
>>> The question I have is, what if a MethodParameters attribute indicates a
>>> name of "" (meaning, the empty string)?  Does this count as a valid
>>> name, or should it be treated as a parameter with no name?
>>>
>>>
>>> It is probably also worth thinking about invalid parameter names, for
>>> example "10", "_", "+", " ", other whitespace characters, and so on.
>>
>> What about name clashes, such as if I choose to name my args "arg3,
>> arg2, arg1, arg0"
>>
>> Are valid parameter names JVMS identifiers or JLS identifiers?
>>
> 
> It bears mention that Java may not be the only language using this
> feature.  Lisp (clojure) comes to mind, where names frequently have "-"
> in them.  There might also be languages out there where "0" is a valid
> identifier.
> 
> Also, one could imagine a language with nameless parameters in the style
> of C++, or _ in the style of SML.  But I really can't see a compelling
> case why "" would be distinct from being unnamed.


More information about the enhanced-metadata-spec-discuss mailing list