org.codehaus.groovy.runtime.typehandling.GroovyCastException

There are no available Samebug tips for this exception. Do you have an idea how to solve this issue? A short tip would help users who saw this issue last week.

  • It does not seem possible to overload a setter with multiple methods. Groovy seems to randomly decide to fail with cast exceptions rather than actually calling the correct setter. Here is the code: public class Person { // id is added by grails String name String email Date birthdate int age = 0 PersonSex sex = PersonSex.unknown boolean active = true void setBirthdate(String date) { // try to convert from string def df = new SimpleDateFormat("yyyy/MM/dd") birthdate = df.parse(date); } void setBirthdate(Number date) { birthdate = new Date(date) } } I have a few tests to verify that I can create a user with a Date, String, or Long With the code above it is not possible to set the bithdate to a Date anymore as I always get a cast exception. If I change "Number" to "Long" or "long" then the String test passes but the number test fails. If I leave it as shown above then the String test fails with this exception: org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object '1975/10/29' with class 'java.lang.String' to class 'java.lang.Number' at org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation.castToNumber(DefaultTypeTransformation.java:132) at org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation.castToType(DefaultTypeTransformation.java:261) at groovy.lang.MetaClassImpl.setProperty(MetaClassImpl.java:2392) at groovy.lang.MetaClassImpl.setProperty(MetaClassImpl.java:3307) at groovy.lang.MetaClassImpl.setProperties(MetaClassImpl.java:1506) at groovy.lang.MetaClassImpl.invokeConstructor(MetaClassImpl.java:1483) at groovy.lang.MetaClassImpl.invokeConstructor(MetaClassImpl.java:1404) at org.codehaus.groovy.runtime.InvokerHelper.invokeConstructorOf(InvokerHelper.java:775) at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeNewN(ScriptBytecodeAdapter.java:220) at PersonTest.testPersonStringDate(PersonTests.groovy:32) It seems like groovy is only able to work with a single setter method but it should be able to handle overloaded methods and properly call the one which matches the type.
    via by Aaron Zeckoski,
  • Bug with Groovy 2.0
    via GitHub by glaforge
    ,
  • Invalid Cast to BigDecimal
    via GitHub by polariss0i
    ,
  • Configuring TelluriumPowerUtilityDiagnose in project
    via by Khushwinder Singh,
  • [groovy-user] groovy lists and java arrays
    via by John Sanabria,
    • org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object '1975/10/29' with class 'java.lang.String' to class 'java.lang.Number' at org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation.castToNumber(DefaultTypeTransformation.java:132) at org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation.castToType(DefaultTypeTransformation.java:261) at groovy.lang.MetaClassImpl.setProperty(MetaClassImpl.java:2392) at groovy.lang.MetaClassImpl.setProperty(MetaClassImpl.java:3307) at groovy.lang.MetaClassImpl.setProperties(MetaClassImpl.java:1506) at groovy.lang.MetaClassImpl.invokeConstructor(MetaClassImpl.java:1483) at groovy.lang.MetaClassImpl.invokeConstructor(MetaClassImpl.java:1404) at org.codehaus.groovy.runtime.InvokerHelper.invokeConstructorOf(InvokerHelper.java:775) at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeNewN(ScriptBytecodeAdapter.java:220) at PersonTest.testPersonStringDate(PersonTests.groovy:32)

    Users with the same issue

    zbalintzbalint
    1 times, last one,
    derproggerderprogger
    552 times, last one,
    musketyrmusketyr
    1 times, last one,
    kjhdofjosvskjhdofjosvs
    1 times, last one,
    Unknown visitor
    Unknown visitor1 times, last one,
    6 more bugmates