我使用Joshua Bloch的Effective Java,Item 52: Refer to objects by their interfaces
提供的建議。我們是否應該通過Android平臺上的接口引用對象
但是,在大多數Android示例代碼中,我意識到以下代碼是相當常見的。
private ArrayList<Integer> mPhotos = new ArrayList<Integer>();
我明白這是由於性能優化的目的,因爲下面的代碼會更慢。
private List<Integer> mPhotos = new ArrayList<Integer>();
但是,這樣的優化技術仍然有效嗎?因爲如果我從 http://developer.android.com/guide/practices/design/performance.html
未經JIT讀取在設備上,這是事實,經由與確切類型,而不是一個接口的變量調用方法會更有效。 (因此,例如,調用HashMap地圖上的方法比Map地圖更便宜,即使在這兩種情況下地圖都是HashMap。)情況並非如此,速度慢了2倍;實際差異更慢了6%。此外,JIT使這兩者實際上難以區分。
我們是否需要假設我們的設備沒有JIT,並且引用沒有接口的對象?或者,我們是否應該採用Joshua Bloch的建議?
原因不具體。它與私有變量無關。 Joshua Bloch提供的例子也是私人的。 –
所以Joshua Bloch是錯的。 – irreputable
我認爲你對此非常傲慢。你至少需要提供一些真實世界的例子和事實來支持你的陳述。至少在Joshua Bloch的Effective Java中,他提供了一個非常好的現實世界的例子,爲什麼使用接口更好。 –