Я пытаюсь создать «устройство чтения плоских файлов». Эти файлы будут иметь несколько связанных столбцов, таких как «Имя клиента», «Телефон» и т. Д., Но номер столбца будет отличаться для каждого плоского файла; Кроме того, некоторые плоские файлы будут иметь столбцы, которые другие нет.Должен ли я использовать EnumSet?
Я хочу, чтобы каждый из этих различных файлов читался классом FlatFileReader. Поэтому я создал перечисление для первого плоского файла, где значение является индексом для массива.
enum Columns { NAME, TELEPHONE, PAYMENT }
...
String[] columns = new String[3];
columns[0] = line.substring(0,29); //Name
columns[1] = line.substring(30,36); //Telephone
columns[2] = line.substring(37); //Payment
Так что для того, чтобы получить, например, имя из плоского файла, FlatFileReader бы вызвать метод:
file.get (Columns.NAME);
и FlatFileA будет искать индекс 0. Там будет широкий множество классов плоских файлов, и я хотел бы, чтобы каждый наследовал одно и то же перечисление, чтобы он был последовательным; проблема в том, что некоторые файлы не будут иметь определенных столбцов. Поэтому я не могу выполнять NAME, TELEPHONE, PAYMENT в родительском классе (или интерфейсе), если FlatFileB не имеет столбца TELEPHONE.
Как я могу решить эту проблему? Это как EnumSet используется? Может ли каждый дочерний класс создавать EnumSet и добавлять только константы, которые ему нужны? Если бы я создал EnumSet и добавил только NAME и PAYMENT, теперь у PAYMENT будет значение 1 (внутри EnumSet) или у него все еще будет значение 2?