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 に答える