如何使用clojure查看java类中的所有私有变量

时间:2013-12-27 04:14:03

标签: clojure

我希望使用clojure检查java类中的私有字段,以便理解一个庞大的单片java应用程序。有没有图书馆可以做到这一点?

2 个答案:

答案 0 :(得分:3)

如果您需要类型信息(而不是运行时状态),请使用clojure.reflect将类反射表示为clojure数据结构。 E.g:

user=> (use 'clojure.pprint 'clojure.reflect)
nil
user=> (pprint (type-reflect String))
{:bases
 #{java.io.Serializable java.lang.Comparable java.lang.Object
   java.lang.CharSequence},
 :flags #{:public :final},
 :members
 #{{:name equalsIgnoreCase,
    :return-type boolean,
    :declaring-class java.lang.String,
    :parameter-types [java.lang.String],
    :exception-types [],
    :flags #{:public}}
...

答案 1 :(得分:2)

可以使用clj-wallhack

访问私有字段和方法