计算普通数字实例的字节使用情况

calculating the byte usage of a plain number instance

我正在编写一个自定义文件格式,我想将文件的某个区域解析为一个映射,该映射将字符串作为键,java.lang.number 实例(例如 int、long)作为值。有没有什么方法可以访问值的字节使用情况而不必先确定它们的 class 类型?我的意思是 Number 的所有子 classes 都有一个名为 "BYTES" 的静态变量,引用它们使用的实际字节数。 我想做这样的事情:

byte b = ((Number)map.get("key")).BYTES;

一种方法是长手

byte b = 0;
Number n = (Number)map.get("key");
if (n instanceof Integer) {
  b = 4;
}
else if (n instanceof Byte) {
  b = 1;
}
else if ...

David SN 发布了一个使用反射的解决方案,可能更适合您

您可以使用反射获取 BYTES 常量的值:

Number number = map.get("key");
int numberOfBytes = number.getClass().getDeclaredField("BYTES").getInt(number);