I am trying to create a closure matcher for Fest with Groovy (2.1.6) like this:
def matcherLabel = [ isMatching: { JLabel label -> /* do something */ } ] as GenericTypeMatcher<JLabel>
GenericTypeMatcher is an abstract class with one method only to implement (isMatching (T t))
but I get this error:
org.codehaus.groovy.runtime.typehandling.GroovyCastException: Error casting map to org.fest.swing.core.GenericTypeMatcher, Reason: null
at org.codehaus.groovy.runtime.DefaultGroovyMethods.asType(DefaultGroovyMethods.java:7562)
Is it possible what I am trying to do?
Your problem is that the
GenericTypeMatcher
class doesn't have a default, zero-parameter constructor. Cast the map to an interface likeComponentMatcher
instead. If you can't use an interface, another alternative is to subclassGenericTypeMatcher
and provide a zero-parameter constructor.