在Clojure中动态访问Java字段? [英] Access Java fields dynamically in Clojure?
本文介绍了在Clojure中动态访问Java字段?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我是clojure和java的新手。
为了访问Clojure中的Java字段,您可以:
Classname / staticField
与
完全相同 (。Classname staticField)
当变量中保存的字段名称时,如何访问静态字段?例如:
(let [key-stroke'VK_L
key-event KeyEvent / key-stroke])
我想要键行程
解决方案
在这种情况下,您可能需要执行以下操作:
user => (def m'parseInt)
#'user / m
user => `(。Integer〜m10)
(。java.lang.Integer parseInt10)
user => (eval`(。Integer〜m10))
10
喜欢它有点黑客,这是因为它真的是这样的。可能有更好的方法来构建代码,但至少这应该工作。
I'm a novice in clojure and java.
In order to access a Java field in Clojure you can do:
Classname/staticField
which is just the same as
(. Classname staticField)
(correct me if I'm wrong)
How can I access a static field when the name of the field in held within a variable? i.e.:
(let [key-stroke 'VK_L
key-event KeyEvent/key-stroke])
I want key-stroke
to be evaluated into the symbol VK_L before it tries to access the field.
解决方案
In this case you might want to do something like the following:
user=> (def m 'parseInt)
#'user/m
user=> `(. Integer ~m "10")
(. java.lang.Integer parseInt "10")
user=> (eval `(. Integer ~m "10"))
10
If you feel like it's a bit hack-ish, it's because it really is such. There might be better ways to structure the code, but at least this should work.
这篇关于在Clojure中动态访问Java字段?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文