需對包、類、方法、欄位、局部變量等元素更名時,切勿使用「搜尋替換」,而應善用重構功能。專案中元素往往有眾多調用者,單純替換難以保證定義與調用同步,重構則從語義關聯層面提供同步調整保障。有了重構,「替換」功能在 JBuilder 中將大幅弱化。
打開 Java 文件,游標置於目標欄位/變量標識符 → Ctrl+Shift+R → Rename Field:

圖 4 更名欄位或局部變量的對話框
確定 → 點擊預覽窗口應用按鈕,JBuilder 同步更新所有引用處。
屬性具備 getter/setter,更名時必須同步更新存取方法。編輯器中重構無法做到,但 UML 瀏覽器支援。示例:Cat 類有屬性 age、name,欲將 name 改為 nickname。切換至 UML 視圖,右鍵 name 屬性選 Rename Property for name...:

圖 5 屬性重命名重構
對話框輸入 nickname 確定:

圖 6 屬性重命名重構對話框
JBuilder 除完成屬性定義與引用更名外,同步更新存取方法:getName() → getNickname()、setName(String) → setNickname(String),並修正所有調用處。
游標置於方法名 → Ctrl+Shift+R → Rename Method:

圖 7 方法重構對話框
提示:方法簽名如 public String cry(){...},游標必須置於方法名 cry 才能喚出對話框。
兩個關鍵選項:
foo() → foo_1(),保留 foo(){foo_1();} 確保版本相容。注意:方法重命名僅同步聲明與調用,不會 自動重命名過載方法。若有 3 個過載需執行 3 次重構。
支援新增參數、刪除參數、調整參數順序。示例 Horse.getAccountPrice(int amount, double account):
private double getAccountPrice(int amount, double account) {
return amount * price * account;
}
public void printAccountPrice(int amount) {
double account;
if (amount <= 100) account = 1;
else if (amount <= 500) account = 0.9;
else account = 0.8;
System.out.println("總價為:" + getAccountPrice(amount, account));
}
需求:新增 price 參數,並交換 amount、account 順序。游標置於方法名 → Ctrl+Shift+R → Change Parameters of "getAccountPrice":

圖 8 方法參數重構對話框
步驟:
amount 點 Move Down 移至 account 之後。
圖 9 新增參數對話框
doubleprice1000.0(調用處自動填入)確定返回主對話框,點 OK 完成。重構後代碼:
private double getAccountPrice(double account, int amount, double price) {
return amount * price * account;
}
public void printAccountPrice(int amount) {
double account;
if (amount <= 100) account = 1;
else if (amount <= 500) account = 0.9;
else account = 0.8;
System.out.println("總價為:" + getAccountPrice(account, amount, 1000.0));
}
JBuilder 掃描所有調用處,調整參數順序並以預設值填充新參數(第 17 行)。
游標置於類名 → Ctrl+Shift+R → Rename Class:

圖 10 類重命名重構
將 myrefactor.Cat 改為 PersianCat,JBuilder 完成:
PersianCatPersianCatCat.java → PersianCat.javaCat c = new Cat() → PersianCat c = new PersianCat()無重構時,改類名需手動同步文件名、建構子、引用,極其繁瑣;重構讓此舉輕而易舉。
手動改包名難度更大(包名須與目錄一致、包含多類、各類被多方引用)。重構一併搞定。欲將 myrefactor 改為 myrefactor_1,打開包中任一類,游標置於包名 → Ctrl+Shift+R → Rename Package(對話框同圖 11)。
確定後 JBuilder 執行:
package myrefactor_1;<工作目錄>\src 下建立 myrefactor_1 資料夾,移動原 Java 文件。myrefactor.Cat → myrefactor_1.Cat包中任一類操作均影響全包。若僅遷移單一類(如僅將 Horse 移至 myrefactor_1),可用 ErrorInsight:打開 Horse.java,游標置於類名外 → Ctrl+Shift+R → Move Class:

圖 11 對單個類進行包名更名重構
僅對 Horse.java 執行包遷移,不影響包內其他類。