In Groovy we can use the Java reflection API to examine our classes. Groovy makes it a bit easier because we can access properties the Groovy way. And because we can call methods and properties directly on the class instead of the class property. We can still go the route through the class property, but it is optional.
interface Simple {}
class Sample implements Simple {
String info
String displayInfo() { "info from $Sample.name" }
}
assert 'Sample' == Sample.name
assert 'Sample' == Sample.class.name
def interfaces = Sample.interfaces.name
assert 'Simple' in interfaces
assert 'groovy.lang.GroovyObject' in interfaces
def methods = Sample.methods.name
assert 'setInfo' in methods
assert 'getInfo' in methods
assert 'displayInfo' in methods
def s = new Sample()
assert 'info from Sample' == s.displayInfo()