计算普通数字实例的字节使用情况
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);
我正在编写一个自定义文件格式,我想将文件的某个区域解析为一个映射,该映射将字符串作为键,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);