Clojure Java Interop IllegalArgumentException找不到匹配的方法:id

时间:2016-09-09 02:31:52

标签: java clojure interop

原始Java:

FilterFactory2 ff = CommonFactoryFinder.getFilterFactory2();
Filter idFilter = ff.id(ff.featureId("100"));

Clojure的:

(let [^FilterFactory2 ff (CommonFactoryFinder/getFilterFactory2)
      ^Filter id-filter (.id ff (.featureId ff "100"))]
  (do something...))

当我运行时,我得到IllegalArgumentException No matching method found: id for class org.geotools.filter.FilterFactoryImpl clojure.lang.Reflector.invokeMatchingMethod (Reflector.java:80)

我知道这意味着无法为id找到方法ff。我搜索了docs并且有一个Id属性。我查看了Clojure Java Interop docs,并说点符号(.id ff)应该可以用于访问Java属性。我不确定如何更改我的代码以获得正确的结果。我对Clojure很好,但对Java知之甚少。

Re var length Java args: 据我所知,这个问题与变长Java参数无关,因为主fn ff.id(ff.featureId("100"));只接受一个参数(ff.featureId("100")),该参数的计算结果为String

0 个答案:

没有答案