1

我有一些类需要一堆数据表来完成它们的工作(基本上是基元数组,byte[],short[],int[] 和 float[])。

有些表比较大。在代码中初始化它们会炸毁类文件,并且在某些情况下它还超出了类初始化器的大小限制。

目前我已将数据存储在文件中,并使用 getResourceAsStream() 读取静态块中的文件。

有没有更好的方法使数据与类文件密不可分?无需独立于类替换数据。

4

3 回答 3

1

课堂资源的使用听起来非常合适。它们被滥用于许多目的,但这是一个很好的应用程序。

于 2010-07-15T17:50:40.670 回答
0

也许您可以将数据编码为字符串文字(64K 限制)。

final byte[] table = decode("20,5F,A9,3D,E3.........");
于 2010-07-15T18:36:19.100 回答
0

我认为这取决于情况。例如,对于 DES 或 AES 之类的东西,这些表实际上是算法所固有的:在我看来,将它们与使用它们的代码分开并没有多大意义。在这些情况下,表格并不是真正的“数据”:它们是更多方式的代码。

当我编写一个 DES 实现时,我仍然希望让它们稍微走开,所以我将它们作为包私有类的静态成员包含在同一个包中。然后您甚至可以进行静态导入并使用数组,就好像它们是在您的类中声明的一样。

于 2010-07-15T20:11:20.947 回答