我有一些类需要一堆数据表来完成他们的工作(基本上是基元数组,byte [],short [],int []和float [])。
有些表比较大。在代码中初始化它们会炸掉类文件,在某些情况下它也会超出类初始化程序的大小限制。
目前我已将数据存储在文件中,并使用getResourceAsStream()来读取静态块中的文件。
是否有更好的方法使数据与类文件不可分割?没有必要独立于班级替换数据。
答案 0 :(得分:1)
使用课堂资源听起来非常合适。它们被滥用于许多目的,但这是一个很好的应用。
答案 1 :(得分:0)
也许你可以用字符串文字(64K限制)对数据进行编码。
final byte[] table = decode("20,5F,A9,3D,E3.........");
答案 2 :(得分:0)
我认为这取决于具体情况。例如,对于像DES或AES这样的东西,这些表实际上是算法的固有特性:将它们与使用它们的代码分开在我眼中并没有多大意义。在这些情况下,表格实际上不是“数据”:它们是以更多方式编码的。
当我编写DES实现时,我仍然希望将它们排除在外,所以我将它们作为包私有类的静态成员包含在同一个包中。您甚至可以使用static import然后使用数组,就像它们在您的班级中被声明一样。