0

所以基本上我有一个需要写入具有特定格式的文本文件的 java 对象列表。

例如。

class car
{
    String license;
    String color;
    String model;
    String numOfSeats;
}

这必须写入一个文本文件,其中每一行的格式是

license--color-----model-------numOfSeats------

license必须占用 10 个字节,即使实际字符串的长度更短。

color必须占用 10 个字节,必须model占用 12 个字节等。

所以我想以这样的方式创建一个模板,我可以插入变量,它们占用所需的字节数(即,如果较短则用空格填充,如果较长则截断)

所以以后,如果模板发生变化,我不需要做任何代码更改。我只需要更改模板。

我一直在探索 JEXL,但我不确定如何用它来实现这一点。

4

1 回答 1

1

我能够使用 JEXL 实现这一目标

expression = ${utilClass.rpad(car.getLicense(), 10)}

JexlEngine jexl = new JexlBuilder().create(); JxltEngine jxlt = jexl.createJxltEngine(); JxltEngine.Expression expr = jxlt.createExpression(expression); JexlContext context = new MapContext(); context.set("utilClass", new UtilClass());context.set("car", new Car())

expr.prepare(context); String s= expr.evaluate(context).toString();

我可以从文件中获取表达式,因此如果布局发生变化,我只需更改文件并且不需要触摸代码。

于 2016-07-18T15:54:27.207 回答