2014-10-29 88 views
0

TimeUnit這樣的Enum可能作爲參數傳遞給方法嗎?我正在編寫一個Java方法,它需要很長時間作爲持續時間參數,並且對於是否有更好的方法來執行該方法感到好奇。基本上,我想傳遞一些東西給我的方法,這個方法稍微清晰一些,明確了我實際嘗試傳遞給它的持續時間。我不想寫我自己的包裝,因爲我確定已經有東西存在了,不是嗎?Enum TimeUnit可以作爲參數傳遞給方法嗎?

所以,像這樣的東西,顯然不工作,因爲單位不存儲任何「狀態」,是嗎? :

void timedMethod(TimeUnit unit) { 
    long duration = 1000; 
    long val = unit.toMillis(duration); 
} 
+0

是枚舉可以使用作爲方法參數。 – Braj 2014-10-29 17:16:10

+0

是的,你應該試試:) – 2014-10-29 17:16:43

+1

你爲什麼不嘗試? '公共靜態無效時間(TimeUnit單元){}' – user2336315 2014-10-29 17:16:56

回答

4

當然可以。例如Future#get一個簽名是:

public V get(long timeout, TimeUnit unit); 

和實現可能看起來像:

long millis = unit.toMillis(timeout); 
//do something with the number of milliseconds 

所以,如果你get(1, SECONDS)millis將是1000

+0

因此,你的說法單位可以通過,然後有一些方法來獲得「儲值「 從中?如果是這樣,你能詳細說明一下嗎? – djangofan 2014-10-29 17:23:00

+2

@djangofan你在談論什麼「儲值」?您好像誤解了Java中的枚舉 – fge 2014-10-29 17:23:52

+0

@fge - 我不認爲我誤解了Enum。我對Enum的理解是,它只能轉換值,並且沒有能力存儲。所以,我之所以問我原來的問題,是因爲我想知道是否有其他的java對象/ api,你會推薦這種類型的東西。也許「持續時間」類是我在找什麼? – djangofan 2014-10-29 17:28:33

相關問題