[lambda-leftovers] Underscore parameter for abstract/native methods

Brian Goetz brian.goetz at oracle.com
Sat Jul 29 14:46:47 UTC 2017

As evidence of Tagir's point that people will confuse this for a 
declaration-site feature, I offer this tweet of a random Java developer 
who saw the blink-poll on twitter and immediately lept to the wrong 


On 6/25/2017 6:51 AM, Tagir Valeev wrote:
> Hello!
> Currently in lambda-leftovers underscore is allowed as a parameter name for
> abstract methods. This looks dubious as normally underscore means that
> parameter is not used in the corresponding method/lambda/catch body, but
> there's no actual body and no parameter is actually used anyways (but could
> be used in abstract method implementations). I think, allowing underscores
> for interface methods may encorage bad practices of defining interfaces
> without readable parameter names:
> interface X {
>    void doSomething(int _, long _, String _);
> }
> Should not this be disabled?
> It's even worse for native methods, because underscore assumes that
> parameter is not used, but it does not limit the corresponding native
> implementation from using it.
> With best regards,
> Tagir Valeev.

More information about the amber-dev mailing list