Java enums in generic type

Posted by Marcin Cylke on Stack Overflow See other posts from Stack Overflow or by Marcin Cylke
Published on 2010-06-15T11:47:06Z Indexed on 2010/06/15 12:12 UTC
Read the original article Hit count: 284

Filed under:
|
|

Hi, I'd like to create a generic enum-based mapper for IBatis. I'm doing this with the below code. This does have compile time errors, which I don't know how to fix. Maybe my solution is just plain wrong (keep in mind the use of IBatis), in such case please suggest something better.

Any help appreciated.

What I want to achieve is to define subsequent mappers as:

public class XEnumTypeHandler extends CommonEnumTypeHandler<X> {
}

The current code:

public class CommonEnumTypeHandler<T extends Enum> implements TypeHandlerCallback {

 public void setParameter(ParameterSetter ps, Object o) throws SQLException {
  if (o.getClass().isAssignableFrom(**T**)) { 
   ps.setString(((**T**) o).value().toUpperCase());
  } else
   throw new SQLException("Excpected ParameterType object than: " + o);
 }

 public Object getResult(ResultGetter rs) throws SQLException {
  Object o = valueOf(rs.getString());
  if (o == null)
   throw new SQLException("Unknown parameter type: " + rs.getString());
  return o;
 }

 public Object valueOf(String s) {
  for (T pt : T.**values()**) {
   if (pt.**value()**.equalsIgnoreCase(s))
    return pt;
  }
  return null;
 }
}

I've added error markings to the above code, the error messages are in order:

  • T cannot be resolved
  • The method value() is undefined for the type T
  • The method values() is undefined for the type T
  • The method values() is undefined for the type T

© Stack Overflow or respective owner

Related posts about java

Related posts about generics