下面通過乙個例項來介紹如何使用 static 塊來優化**。該**冗餘部分用綠色標出,該函式被呼叫四次。
public static final string mood_image_key_pre = "pref_camera_water_mark_mood_image_key_";
public static final string mood_image_key_pre_ex = "pref_camera_water_mark_mood_image_key_ex_";
public void onitemclick(adapterview<?> parent, view v, int position, long id) else
watermarkmoodimageactivity.this.finish();
}private int getimagebackgroundidfrompreference(int position) else
int index = imagepreference.findindexofvalue(imagepreference.getvalue());
int imagebackgroundid = imagepreference.getimageidsbackground();
if (imagebackgroundid == null)
return imagebackgroundid[index];
}private int getimageaddon1idfrompreference(int position) else
int index = imagepreference.findindexofvalue(imagepreference.getvalue());
int imageaddon1id = imagepreference.getimageidsaddon1();
if (imageaddon1id == null)
return imageaddon1id[index];
}private int getimageaddon2idfrompreference(int position) else
int index = imagepreference.findindexofvalue(imagepreference.getvalue());
int imageaddon2id = imagepreference.getimageidsaddon2();
if (imageaddon2id == null)
return imageaddon2id[index];
}
之前的**如上面所示。之所以這樣做是因為要對乙個功能根據專案作一些區別。但上面的**的冗餘主要體現在每次呼叫 mood_image_key_pre 時均要作出判斷。下面請看優化之後的**:(綠色部分只呼叫一次)
public static final string mood_image_key_pre;// = "pref_camera_water_mark_mood_image_key_";
static else
}public void onitemclick(adapterview<?> parent, view v, int position, long id)
private int getimagebackgroundidfrompreference(int position)
return imagebackgroundid[index];
}private int getimageaddon1idfrompreference(int position)
return imageaddon1id[index];
}private int getimageaddon2idfrompreference(int position)
return imageaddon2id[index];
}
加了 static 塊之後,其實我們只需要修改 static 塊部分,其它的**均不用作出改動。根據專案來判斷,不同的專案將 mood_image_key_pre 賦為不同的值即可。這樣一來大大簡化了要修改的**。
「塊定義」與「塊參照」的區別
塊定義 與 塊參照 的區別 關係 塊定義 即為 塊表記錄,模型空間,圖紙空間 塊參照 即為塊引用 塊參照 塊引用 存在於模型空間或者布局空間 塊定義和模型空間和布局空間是同等級別 同名塊不可以巢狀 要遍歷塊定義,先用塊參考求出塊定義的id blockid 然後遍歷塊定義。塊參照說明 乙個塊參考用於放...
static靜態塊使用多執行緒的問題
public class mytest catch interruptedexception e b.test 1 public static void test static class bpublic static void test public static void main string...
static語句塊的學習
引用eway 乙個類的執行,jvm做會以下幾件事情 1 類裝載 2 鏈結 3 初始化 4 例項化 而初始化階段做的事情是初始化靜態變數和執行靜態方法等的工作。class.forname args 0 true,off.getclass getclassloader jvm在load class之後就...