在Clojure中动态访问Java字段? [英] Access Java fields dynamically in Clojure?

查看:97
本文介绍了在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆