java - 以编程方式计算值类型的大小

标签 java unit-testing sizeof bitmask memory-size

我正在为将 boolean 值打包到字节中的方法编写单元测试。各个位位置由枚举的值决定,该枚举目前只有 5 个值,但可以想象(尽管极不可能)该数字可能达到 9。

我想要一个简单的测试:

私有(private)字节m_myNum; 枚举 MyEnum {...}

assert(sizeof(m_myNum) <= MyEnum.values().length);

我的印象是Java中没有sizeof函数。最优雅的解决方法是什么?

---编辑

我想我没有说清楚。我不关心正常的运行时间。我的问题是,我现在可以使用存储所有信息的字节编写此代码,但随着枚举在代码的不相关部分中增长,我可能会达到位掩码代码崩溃的程度。我不想在已部署的应用程序中使用此功能,而是希望进行一个单元测试,当枚举中的状态数超过存储变量中的位数时,该单元测试会失败,因此当程序员添加第九个枚举时,他们可以调整变量的类型为超过八位的类型。

最佳答案

我认为这个测试符合你的要求。获得比这更通用的内容可能是浪费您的时间。

public void testEnumSizeLessThanOneByte() throws Exception 
{ 
    assertTrue("MyEnum must have 8 or less values.", 
                MyEnum.values().length <= 8);
}

关于java - 以编程方式计算值类型的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/334951/

相关文章:

java - 如果没有互联网连接,则从 Assets 加载 html

unit-testing - CodeIgniter 中的单元测试和功能测试

c++ - sizeof() 的参数

c - 为什么 sizeof ('a' ) 在 C 中是 4?

java - 在框架上显示多个面板

java - Android中的出生日期问题

java - 如何仅在某些异步执行完成后才执行代码?

unit-testing - Golang 中的编码/解码时间对象意外失败

java - 差异代码覆盖率

C++ fread : unsigned char and short mixture