title: [L array notation - where does it come from?
body: <p>I've often seen messages that use <code>[L</code> then a type to denote an array, for instance:</p>
  
  <p><code>[Ljava.lang.Object; cannot be cast to [Ljava.lang.String;</code></p>
  
  <p>(The above being an arbitrary example I just pulled out.) I know this signifies an array, but where does the syntax come from? Why the beginning <code>[</code> but no closing square bracket? And why the L? Is it purely arbitrary or is there some other historical/technical reason behind it?</p>