Should we refer to objects by their interfaces in Android platform
<p>I use to the advice given by Joshua Bloch's Effective Java, <code>Item 52: Refer to objects by their interfaces</code>.</p>

<p>However, in most of the sample code comes with Android, I realize the following code is quite common.</p>

<pre><code>private ArrayList&lt;Integer&gt; mPhotos = new ArrayList&lt;Integer&gt;();
</code></pre>

<p>I understand this is due to performance optimization purpose, as the following code will be slower.</p>

<pre><code>private List&lt;Integer&gt; mPhotos = new ArrayList&lt;Integer&gt;();
</code></pre>

<p>However, is such optimization technique still valid? As if I read from 
<a href="http://developer.android.com/guide/practices/design/performance.html" rel="nofollow">http://developer.android.com/guide/practices/design/performance.html</a></p>

<blockquote>
  <p>On devices without a JIT, it is true that invoking methods via a variable with an exact type rather than an interface is slightly more efficient. (So, for example, it was cheaper to invoke methods on a HashMap map than a Map map, even though in both cases the map was a HashMap.) It was not the case that this was 2x slower; the actual difference was more like 6% slower. Furthermore, the JIT makes the two effectively indistinguishable.</p>
</blockquote>

<p>Do we need to assume our devices are without JIT, and refer objects without interfaces? Or, shall we just adopt to Joshua Bloch's advice?</p>
