在開發站點剛纔看了這樣的:Android的性能 - '避免內部getter/setter方法'
Avoid Internal Getters/Setters
在像C母語++是很常見的做法是使用getter方法(例如I = getCount將() )而不是直接訪問字段(i = mCount)。對於C++來說,這是一個很好的習慣,因爲編譯器通常可以內聯訪問,如果需要限制或調試字段訪問,則可以隨時添加代碼。
在Android上,這是一個壞主意。虛擬方法調用比實例字段查找更昂貴。遵循常見的面向對象的編程實踐是合理的,並且在公共接口中有getter和setter,但在一個類中,您應該總是直接訪問字段。
沒有JIT,直接字段訪問速度比調用平凡的getter快大約3倍。使用JIT(直接字段訪問與訪問本地一樣便宜),直接字段訪問比調用一個簡單的getter快7倍。 Froyo確實如此,但在JIT內嵌getter方法時將來會有所改進。
因此,它是說你會使用字段訪問類中:約從另一個對象訪問
public class MyObject {
public Object innerObject; // This would be private if I was using a getter
public void doSomeStuff(){
if(innerObject){ // Within class access like this
// ....
}
}
public Object getInnerObject(){ // This would be removed if I was using field access
return innerObject;
}
}
但是什麼?
public class SecondObject {
public void doSecondSomething(){
MyObject ob = new MyObject();
Object inner;
//This is my question basically (from an Android performance perspective)
inner = ob.getInnerObject();
// OR
inner = b.innerObject
}
}
只需指出這一點,請記住,Dalvik不是JVM,不應將此做法視爲在常規Java開發中執行的常規方法。 – Esko
你的報價說明了一切,不是嗎? **遵循常見的面向對象編程實踐並在公共接口**中有getter和setter是合理的。另外:不要去過度設計。只要使用吸氣劑,除非你進行大量的呼叫。或有速度問題。 – Nanne