我寫了一個汽車程序,該程序有四種方法:加速,制動,齒輪和啓動,並且我想確保在任何其他方法之前先調用啓動方法三種方法被稱爲.pls我應該如何做到這一點。如何確保在java之前先調用某個方法
回答
我寫了一個汽車程序,有四種方法加速,制動,齒輪和啓動,並且我想確保在任何其他三種方法被調用之前先調用啓動方法.pls我應該怎麼做這個。
也許你應該考慮一種不同的方法。例如,我建議你實際上允許調用所有的方法,但是除非啓動被調用,否則沒有響應。例如,您可以給您的Car類設置一個布爾變量,稱爲running,在start()
之前設置爲true。那麼如果運行是錯誤的,你的其他方法什麼也不做
所以加速可能看起來像:
public void accelerate() {
if (!running) {
// exit the method and return to caller or throw exception
return;
} else {
// do what the method normally would do here
}
}
感謝您認爲我可以通過您的提示做些什麼 – 2014-09-01 22:12:38
另一種方法是'IllegalStateException'。 – chrylis 2014-09-01 22:56:39
這就是所謂的 「保持現狀」。有這樣做的方法很多,但也許是很基本的一個將保持boolean
變量,它會告訴你,如果汽車啓動與否:
public class Car {
private boolean isStarted = false;
public void start() {
... // Do things
isStarted = true;
}
...
}
現在你的其他方法需要檢查isStarted
,看看是否汽車處於適當的狀態:
void accelerate() {
if (!isStarted) {
throw new IllegalStateException("Car must be started to accelerate");
}
// Do other things
}
void brake() {
if (!isStarted) {
throw new IllegalStateException("Car must be started to brake");
}
// Do other things
}
// ...and so on
只需創建一個簡單的標誌讓其他方法知道你的汽車已經啓動。
喜歡的東西:
boolean started;
start(){ started=true; }
accelerate() {
if(started){
// Your code here
}
}
你可以在技術上有一個類UnstartedCar
他們的唯一方法是StartedCar start()
,返回StartedCar與accelerate
。
這樣的模式意味着編譯器會拒絕接受任何不能正確操作汽車的文件,它會告訴用戶在他們運行該程序之前他們不能加速未啓動的汽車:
UnstartedCar unstartedCar = Dealer.buyCar();
unstartedCar.accelerate();
會導致:
error: cannot find symbol
unstartedCar.accelerate();
^
symbol: method accelerate()
location: variable car of type UnstartedCar
同時,
StartedCar startedCar = unstartedCar.start();
startedCar.accelerate();
會正常工作,因爲這輛車是先啓動的。這類似於一些汽車只是拒絕讓你離開公園,除非你踩下剎車。它將永久消除由於在駕駛之前未啓動汽車而產生的每一個可能出現的錯誤(讓編譯器捕獲它被稱爲「類型安全」)。
但是,雖然這是一個非常有用的API功能,它可以防止大量的錯誤,並且在其他語言中受到高度追捧,但它不是慣用的Java而是。
取而代之的是,如果您嘗試在不啓動的情況下進行加速(稱爲「快速失效」,並在dasblinkenlight的回答中進行了說明),則預計該車會發生爆炸。這種錯誤非常明顯,易於早期修復,並且更符合常見的Java約定。
舊的方法是隻是沒有車做任何事情。這不再被推薦,因爲錯誤很難找到。當客戶抱怨他們的包裹沒有交付時,您只能在數週後發現錯誤,並且發現車庫裏所有的司機都在加速器的地板上,但因爲他們忘記首先啓動車輛而沒有移動。
- 1. JAVA:如何確保1方法在調用下一個之前完成?
- 2. 在每個web服務調用之前調用某種方法
- 3. 如何等待某個函數在java中返回之前調用某個回調方法?
- 4. 方法Swizzling - 如何確保方法被調用之前他們被稱爲
- 5. 確保在測試過程中在某個點調用方法
- 6. 如何在調用方法之後和方法調用之前運行方法?
- 7. Android:如何確保在調用另一種方法之前終止AsyncTask?
- 8. Java-如何在每個方法調用之前和之後自動調用方法
- 9. java方法如何在調用之前拋出異常
- 10. 在另一個之前調用方法
- 11. 在調用每個測試方法之前,如何調用setUp()方法?
- 12. 如何確保首先調用Spring @EventListener?
- 13. 如何在其他方法之前調用方法
- 14. 如何在trait方法調用之前添加方法?
- 15. 如何確保在notify_one之前調用wait_for
- 16. 如何確保在調用javascript文件之前加載頁面
- 17. 如何在離開方法之前等待回調(Java)
- 18. 每個方法調用之前的Spring調用方法
- 19. 如何在當前之後調用先前綁定的事件?
- 20. 在調用方法之前使用'this'。
- 21. 每次調用任何其他方法之前調用方法
- 22. 如何以某種優先級調用異步方法?
- 23. UItableview重載方法在另一個方法之前調用
- 24. 如何使每個類方法在執行之前調用指定的方法?
- 25. 如何從某個Java線程調用方法
- 26. 確保塊內的方法在調用另一個方法之前完成執行
- 27. 如何在調用保存在CActiveRecord中的方法之前驗證屬性?
- 28. Java - 在每年的某個月之前
- 29. 在調用「WebSecurity」類的任何其他方法之前,必須先調用「WebSecurity.InitializeDatabaseConnection」方法。
- 30. 正確調用方法:(Java)
你的程序將會有順序,所以如果你先打電話或做一些if語句強迫它成爲第一件事情會很好 – 2014-09-01 22:06:10
'boolean running = false;'把它添加到你的班級。當啓動被調用時,將其更改爲true。如果調用其他方法,只有在運行== true時才運行它們。 – csmckelvey 2014-09-01 22:09:04