title: Why doesn't Java allow omitting formal parameter names in a function declaration?
body: <p>I'm looking to understand <strong><em>why</em></strong> Java designers chose to implement function declarations this way. I've often heard it said that the designers of Java wanted to avoid poor design choices made in other languages (e.g., C++) -- <em>multiple inheritance via classes</em> and <em>operator overloading</em> come to mind -- in order to keep the object-oriented model as simple as possible and to encourage good programming practices. Is that true in this case? Is this feature too expensive to implement <em>vis-a-vis</em> the (admittedly marginal) gains it provides?</p>
  <p>The thing is, I can't see (and I'm still learning, so that probably means squat! :D) a significant implementation overhead in allowing the omission of formal parameter names in function declarations. And I can think of at least one example where this feature couldn't hurt: defining abstract functions.</p>
  <p>Anyway, glad to hear some thoughts from people on SO. BTW, <a href="http://java.sun.com/docs/books/jls/third_edition/html/classes.html#8.4.1" rel="nofollow noreferrer">the relevant section (8.4.1)</a> of the Java Language Specification explains <em>what</em> but doesn't talk about <em>why</em>.</p>
  <p>EDIT: <strong>Adding a code snippet:</strong></p>
  <pre>abstract void someFunc(int, int, int);</pre>
  <p>(I'm using an abstract function as this is one simple case I can think of where this feature would be handy).</p>