Clojure,在不同的 Java 对象上调用相同的方法

Clojure, same method call on different Java Objects

在此代码中 headerTablerowsTable 是 Java 对象。这里正在对它们调用具有相同参数的相同方法:

(.setHorizontalAlignment headerTable Element/ALIGN_LEFT)
(.setHorizontalAlignment rowsTable Element/ALIGN_LEFT)  

有更好的方法吗?我认为必须有一种方法可以以某种方式将两个调用合并为一个。但由于这是 'side effecting' 代码,也许不是??

我正在考虑不编写自定义函数或宏的答案,例如 "just use juxt or comp",但也许我有点太规范了...

编辑 Leonid Beschastny 提到了类型提示,所以为了以防万一它有帮助,这里是 Java 方法签名:

public void setHorizontalAlignment(int horizontalAlignment)  

而 class 是 PdfPTable,来自 iText。 (此代码用于创建 PDF 文件)。

有很多种可能的重构,一种是

(run! #(.setHorizontalAlignment ^PdfPTable % Element/ALIGN_LEFT)
      [headerTable rowsTable])