我正在编写一个代码,其中我需要filesize和filesize单元。让我们说如果有人在调用我的函数,他就会调用它
myfun (3, MB)
这意味着预期的文件大小为3 MB。我想把这个“文件单元”放在枚举
中public enum SizeUnit {BYTE, KILOBYTE, MEGABYTE, GIGABYTE}
现在问题是将给定大小转换为字节。当然,我可以做简单的数学运算,但我想要更多的东西。所以,如果somene称我为
这样的函数,那就说吧 myfun (3, MEGABYTE)
在我的代码中,我只想3 * MEGABYTE
将其转换为BYTE
单元。
我不确定这是否可能......我只想到一种可能性。枚举中可能有一个方法,它采用其单位并进行计算? (我不想做那些微不足道的事情,应该有足够通用的东西)。
答案 0 :(得分:4)
您可以这样做:
public enum SizeUnit
{
BYTE(1),
KILOBYTE(1024),
...;
private final int bytes;
private SizeUnit(final int bytes) { this.bytes = bytes; }
public int getByteCount() { return this.bytes; }
}
然后你可以做以下事情:
3 * KILOBYTE.getByteCount();
甚至定义一个名为getBytes
的方法,它传递一个数字。所以KILOBYTE.getBytes(3)
。
答案 1 :(得分:0)
TimeUnit做了类似的事情,它有一个转换为基本单位的方法,在你的情况下为字节。
我的工作是使用
3 * 1024 // as 3 KB
3 * 1024 * 1024 // as 3 MB
这清楚地表明了我的意思
3 * 1000 // as 3 KB of disk space.
3 * 1000 * 1000 // as 3 MB of disk space.