我正在尝试构建一个“平面文件阅读器”。这些文件将有几个相关的列,例如“客户名称”、“电话”等,但每个平面文件的列号会有所不同;此外,一些平面文件将包含其他文件没有的列。
我希望 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。平面文件类将有很多种,我希望每个类都继承相同的枚举,以使其保持一致;问题是某些文件没有某些列。因此,如果 FlatFileB 没有 TELEPHONE 列,我不能在父类(或接口)中执行 NAME、TELEPHONE、PAYMENT。
我该如何解决这个问题?这是 EnumSet 的使用方式吗?每个子类可以创建一个 EnumSet 并且只添加它需要的常量吗?如果我创建了一个 EnumSet 并且只添加了 NAME 和 PAYMENT,那么 PAYMENT 现在的值是 1(在 EnumSet 内)还是仍然是 2?