10

在 Python 中,我可以看到对象具有哪些方法和字段:

print dir(my_object)

Groovy 中的等价物是什么(假设它有一个)?

4

3 回答 3

9

在 Groovy 中看起来特别好(未经测试,取自此链接,因此代码信用应该去那里):

// Introspection, know all the details about classes :
// List all constructors of a class
String.constructors.each{println it}

// List all interfaces implemented by a class
String.interfaces.each{println it}

// List all methods offered by a class
String.methods.each{println it}

// Just list the methods names
String.methods.name

// Get the fields of an object (with their values)
d = new Date()
d.properties.each{println it}

您正在寻找的通用术语是introspection

于 2012-06-04T13:53:37.077 回答
7

如此处所述,要查找为 String 对象定义的所有方法:

 "foo".metaClass.methods*.name.sort().unique()

它不像Python版本那么简单,也许其他人可以提供更好的方法。

于 2012-06-04T13:53:47.623 回答
0

除了只使用普通的 Java 反射 API,还有:

http://docs.codehaus.org/display/GROOVY/JN3535-Reflection

您还可以使用元类玩游戏。

于 2012-06-04T14:16:21.763 回答