首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >找不到方法,但clojure.reflector显示不同

找不到方法,但clojure.reflector显示不同
EN

Stack Overflow用户
提问于 2017-03-13 01:19:18
回答 1查看 42关注 0票数 0

我正在尝试使用hapi fhir从clojure创建一个dstu2客户端。我使用https://github.com/jamesagnew/hapi-fhir/blob/master/examples/src/main/java/example/GenericClientExample.java作为模板

但是我不能执行

代码语言:javascript
复制
ctx.setPerformanceOptions(PerformanceOptionsEnum.DEFERRED_MODEL_SCANNING);
in clojure

我做的事情如下:

代码语言:javascript
复制
(def fhir-context (. FhirContext forDstu2))
=> #'emrspp.fhir-resources/fhir-context 
(def opts PerformanceOptionsEnum/DEFERRED_MODEL_SCANNING)
=>  #'emrspp.fhir-resources/opts 

但是下面的But失败了:

代码语言:javascript
复制
(.setPerformanceOptions fhir-context opts)
=>
CompilerException java.lang.IllegalArgumentException: No matching method found: setPerformanceOptions for class ca.uhn.fhir.context.FhirContext

clojure反射提供了以下功能:

代码语言:javascript
复制
(pprint (filter #(= "setPerformanceOptions" (str (:name %))) (:members  (r/reflect fhir-context))))

=> 
~
({:name setPerformanceOptions,
  :return-type void,
  :declaring-class ca.uhn.fhir.context.FhirContext,
  :parameter-types [ca.uhn.fhir.context.PerformanceOptionsEnum<>],
  :exception-types [],
  :flags #{:varargs :public}}
 {:name setPerformanceOptions,
  :return-type void,
  :declaring-class ca.uhn.fhir.context.FhirContext,
  :parameter-types [java.util.Collection],
  :exception-types [],
  :flags #{:public}})
nil

imports部分为:

代码语言:javascript
复制
 (:import [org.hl7.fhir.instance.model.api IBaseOperationOutcome IBaseResource ]
  7            [ca.uhn.fhir.context FhirContext PerformanceOptionsEnum]
  8            [ca.uhn.fhir.model.base.resource BaseOperationOutcome ]
  9            [ca.uhn.fhir.model.dstu2.resource Bundle
 10                                              Conformance Observation
 11                                              OperationOutcome
 12                                              Organization Parameters
 13                                              Patient Provenance]
 14            [ca.uhn.fhir.model.dstu2.valueset AdministrativeGenderEnum IssueSeverityEnum]
 15             [ca.uhn.fhir.model.primitive DateDt IdDt  InstantDt]
 16            [ca.uhn.fhir.rest.api  MethodOutcome SummaryEnum ]
 17            [ca.uhn.fhir.rest.client IGenericClient ServerValidationModeEnum interceptor.LoggingInterceptor ]
 18            [ca.uhn.fhir.rest.method.SearchStyleEnum ]
 19            [ca.uhn.fhir.rest.param.DateRangeParam ]
 20            [ca.uhn.fhir.rest.server.exceptions.PreconditionFailedException ]
 21            )

with no :除了pprint和reflection之外,需要

关于看似存在但实际执行的方法setPerformanceOptions会发生什么情况?

EN

回答 1

Stack Overflow用户

发布于 2017-03-13 05:46:55

几个小时后我就想通了。我仔细查看了名称空间:http://hapifhir.io/apidocs/ca/uhn/fhir/context/FhirContext.html揭示了传递的参数需要是一个java集合,因此

代码语言:javascript
复制
(.setPerformanceOptions fhir-context opts)

必须更改为

代码语言:javascript
复制
(.setPerformanceOptions fhir-context (java.util.ArrayList. [opts]))

或更简单

代码语言:javascript
复制
(.setPerformanceOptions fhir-context [opts] )
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42750589

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档