Как я могу включить (постоянные) таблицы примитивных данных в класс? - PullRequest
1 голос
/ 15 июля 2010

У меня есть некоторые классы, которым для работы нужна куча таблиц данных (в основном это массивы примитивов, byte [], short [], int [] и float []).

Некоторые таблицы относительно большие. Инициализация их в коде взрывает файл класса, а в некоторых случаях он также превышает ограничение размера для инициализатора класса.

В настоящее время я сохранил данные в файлах и использую getResourceAsStream () для чтения файлов в статическом блоке.

Есть ли лучший способ сделать данные неотделимыми от файла класса? Нет необходимости когда-либо заменять данные независимо от класса.

Ответы [ 3 ]

1 голос
/ 15 июля 2010

Использование ресурсов класса звучит совершенно уместно. Они используются во многих целях, но это отличное приложение.

0 голосов
/ 16 июля 2010

Я думаю, это зависит от ситуации.Для чего-то вроде DES или AES, например, таблицы на самом деле являются неотъемлемой частью алгоритма: отделить их от кода, который их использует, не имеет большого смысла в моих глазах.В этих случаях таблица на самом деле не является «данными»: они кодируются разными способами.

Когда я писал реализацию DES, я все же хотел немного их убрать, поэтому я включилони как статические члены частного класса пакета в том же пакете.Вы даже можете тогда сделать статический импорт и использовать массивы, как если бы они были объявлены прямо в вашем классе.

0 голосов
/ 15 июля 2010

возможно, вы можете закодировать данные в строковый литерал (ограничение 64 КБ).

final byte[] table = decode("20,5F,A9,3D,E3.........");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...