首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这个关键字的分类

这个关键字的分类
EN

Stack Overflow用户
提问于 2017-03-15 00:00:39
回答 1查看 571关注 0票数 2

可以在gen类方法中引用Java的“this”关键字吗?

我正在尝试实现daredesm的答案这里,在Clojure中。但是,当我试图在run函数中使用' this‘时,我得到了"java.lang.RuntimeException:无法解析符号:这个上下文中的符号“。

代码语言:javascript
复制
(gen-class
  :name ClipboardListener
  :extends java.lang.Thread
  :implements [java.awt.datatransfer.ClipboardOwner]
  :prefix ClipboardListener-
  :methods [[takeOwnership [Transferable] void]])

(def systemClipboard (.getSystemClipboard (java.awt.Toolkit/getDefaultToolkit)))

(defn ClipboardListener-run []
  (let [transferable (.getContents systemClipboard this)]
    (.takeOwnership transferable)))

(defn ClipboardListener-lostOwnership [clipboard trasferable] (prn "hit lost"))
(defn ClipboardListener-takeOwnership [transferable] (prn "hit take"))
(defn processClipboard [transferable clipboard] (prn "hit process"))

注意:这是我第一次在Clojure中生成Java类,因此非常感谢任何一般性的反馈/资源。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-15 01:01:52

实例方法可以使用隐式“self”arg作为第一个参数。因此,以你为例:

代码语言:javascript
复制
(defn ClipboardListener-run [this]
  (let [transferable (.getContents systemClipboard this)]
    (.takeOwnership transferable)))

注意this参数:)

任何实例方法也是如此,例如:

代码语言:javascript
复制
(defn ClipboardListener-toString [this]
  "override Object#toString with something cool")

查看 (无双关意),以获得更多关于gen类的信息。

还可以考虑reify,例如RunnableCallable、e.t.c,在这些情况下,您只需要实现一个小型的ish接口。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42798775

复制
相关文章

相似问题

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