[ https://issues.apache.org/jira/browse/IBATIS-128?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12495387 ]
Clinton Begin commented on IBATIS-128: -------------------------------------- <rant> I seriously can't believe how bad Java 5 is. That's the most ridiculous implementation of generics I've ever seen and it breaks significant rules of adhoc polymorphism (method overloading) as we've known them since the beginning. Since the beginning of "Java time" it has been been illegal to have the same method signature differing only by return types. Have a bridge method, fine, but use a different naming convnention! What is their problem? Good lord. </rant> > Detect illegal overloaded JavaBeans properties methods (e.g. setters) > --------------------------------------------------------------------- > > Key: IBATIS-128 > URL: https://issues.apache.org/jira/browse/IBATIS-128 > Project: iBatis for Java > Issue Type: Improvement > Components: SQL Maps > Affects Versions: 2.0.8 > Environment: iBatis 2.0.7 > Reporter: Jerome Lacoste > Assigned To: Jeff Butler > Priority: Minor > Fix For: 2.2.0 > > > ClassInfo keys setters by their names. > private void addMethods(Class cls) { > Method[] methods = cls.getMethods(); > for (int i = 0; i < methods.length; i++) { > String name = methods[i].getName(); > if (name.startsWith("set") && name.length() > 3) { > if (methods[i].getParameterTypes().length == 1) { > name = dropCase(name); > --> setMethods.put(name, methods[i]); > setTypes.put(name, methods[i].getParameterTypes()[0]); > } > See > http://cvs.sourceforge.net/viewcvs.py/ibatisdb/ibatis-dbl-2/src/com/ibatis/common/beans/ClassInfo.java?rev=1.8&view=markup > So if you overload a method in your bean, you never know which one is going > to be stored last in the map. > With: > public void setFeatureIDs(Set featureIDs) { > this.featureIDs = featureIDs; > } > public void setFeatureIDs(List featureIDs) { > this.featureIDs = new TreeSet(featureIDs); > } > I end up with the following error: > Error setting property 'setFeatureIDs(java.util.Set=[2] $Proxy4 implements > interface java.util.List)' of 'Part-20021'. Cause: > java.lang.IllegalArgumentException: argument type mismatch Caused by: > java.lang.IllegalArgumentException: argument type mismatch]; > See issue IBATIS-127 for debugging -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.