Java 设计枚举

Java 设计枚举,java,enums,Java,Enums,我正在编写一个代码,其中需要文件大小和文件大小单元。假设有人在调用我的函数,他会调用它 myfun(3MB) 这意味着预期的文件大小为3MB。我想把这个“文件单元”放在一个枚举中 public enum SizeUnit {BYTE, KILOBYTE, MEGABYTE, GIGABYTE} 现在的问题是将给定的大小转换为字节。当然,我可以做简单的数学,但我想要更一般的东西。如果有人这样称呼我 myfun(3兆字节) 在我的代码中,我只想将3*兆字节转换成字节单位 我不确定这是否可能。。。我

我正在编写一个代码,其中需要文件大小和文件大小单元。假设有人在调用我的函数,他会调用它
myfun(3MB)

这意味着预期的文件大小为3MB。我想把这个“文件单元”放在一个枚举中

public enum SizeUnit {BYTE, KILOBYTE, MEGABYTE, GIGABYTE}
现在的问题是将给定的大小转换为字节。当然,我可以做简单的数学,但我想要更一般的东西。如果有人这样称呼我

myfun(3兆字节)
在我的代码中,我只想将
3*兆字节
转换成
字节
单位


我不确定这是否可能。。。我只是在考虑一种可能性。enum中可能有一个方法,它以其为单位进行计算?(我不想做琐碎的事情,应该有一些足够通用的东西。)

你可以这样做:

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)
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.

-在教程中,你希望千字节是1000字节(就像磁盘空间一样),或者1024字节是内存?这不是我想要的。我知道我能做这件事。也许我的问题还不够清楚。但是谢谢你的反对票!