Enum TimeUnit可以作为参数传递给方法吗?

时间:2014-10-29 17:14:59

标签: java enums

是否可以将类似TimeUnit的枚举作为参数传递给方法?我正在编写一个Java方法,它需要很长的持续时间参数,如果有更好的方法,我很好奇。基本上,我想把一些东西传递给我的方法,这个方法在我实际尝试传递给它的持续时间上有点清晰/明确。我不想写自己的包装器,因为我确定那里已经存在某些东西,不是吗?

所以,这样的事情显然不起作用,因为单位不存储任何“状态”,是吗? :

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

1 个答案:

答案 0 :(得分: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。