Interface 在Clojure(新手)中实现接口和调用Java常量

Interface 在Clojure(新手)中实现接口和调用Java常量,interface,clojure,java-interop,Interface,Clojure,Java Interop,我试图在Clojure中为GoogleAdWordsAPI编写一个包装器,但在常量和接口方面遇到了困难。 java代码如下所示: CampaignServiceInterface campaignService = user.getService(AdWordsService.V201109.CAMPAIGN_SERVICE); 通常,您可以在Clojure中使用例如(Math/PI)调用常量,但当我编写时: (def user (AdWordsUser. )) (.getServic

我试图在Clojure中为GoogleAdWordsAPI编写一个包装器,但在常量和接口方面遇到了困难。 java代码如下所示:

CampaignServiceInterface campaignService =
    user.getService(AdWordsService.V201109.CAMPAIGN_SERVICE);
通常,您可以在Clojure中使用例如(Math/PI)调用常量,但当我编写时:

(def user (AdWordsUser. ))
(.getService user (AdWordsService/V201109/CAMPAIGN_SERVICE))
我只是得到“没有这样的名称空间”。 此外,对于如何正确实现接口,我也有点不知所措。我想我应该用“具体化”,但我被卡住了

链接到接口:


1.关于访问常量。您是否导入了AdWordsService?如果没有,您可以使用完全限定的名称访问
adwords服务
:some.package.name.adwords服务/V201109/CAMPAIGN_服务,或者通过宏导入它

2.检查以下示例:


1.关于访问常量。您是否导入了AdWordsService?如果没有,您可以使用完全限定的名称访问
adwords服务
:some.package.name.adwords服务/V201109/CAMPAIGN_服务,或者通过宏导入它

2.检查以下示例:


如果我没有看错的话,
AdWordsService.V201109.CAMPAIGN\u SERVICE
是AdWordsService类内部类的一个静态常量

要访问内部类,您需要使用java的内部名称混乱方案**;用$符号将内部类与其外部类分开:

AdWordsService$V201109/活动服务


**JVM实际上没有内部类的概念,所以java通过创建一个独立的类来“伪造”它,
AdWordsService$V201109

如果我读得正确,
AdWordsService.V201109.CAMPAIGN_SERVICE
是类AdWordsService内部类的一个静态常量

要访问内部类,您需要使用java的内部名称混乱方案**;用$符号将内部类与其外部类分开:

AdWordsService$V201109/活动服务


**JVM实际上没有内部类的概念,所以java通过创建一个独立的类来“伪造”它
AdWordsService$V201109

你好,Nikita,是的,我导入了它,我会尝试你的方法。感谢界面示例!你好,尼基塔,是的,我是进口的,我会试试你的方法。感谢界面示例!谢谢你,乔斯特!我想我现在明白了!谢谢你,乔斯特!我想我现在明白了!
(defn campaign-service [ ]
(reify 
  com.google.adwords.api.v201109.cm.CampaignServiceInterface
  (get [this] ??))))
(defn campaign-service [ ]
(reify   
  com.google.adwords.api.v201109.cm.CampaignServiceInterface
  (get [_ selector] (some-function selector))
  (mutate [_ operations] (some-function-2 operations))))