Mikhail Teterin wrote:
Hello!
I would like to be able to initialize fields of an enum with /methods/
(of
another Class).
Here is the (non-working) example:
import java.util.*;
import java.sql.*;
public enum Field {
FIELD1 (ResultSet.getString),
FIELD2 (ResultSet.getDouble),
...
FIELDN (ResultSet.getTimestamp);
private java.lang.reflect.Method extract;
}
the idea is to be able to get all fields from a given ResultSet by going
through the list of Fields and extracting the column from the ResultSet.
Something like:
public void print(ResultSet rs)
{
for (Field f : Field.values())
System.out.println(f + ":\t" + rs.f.extract(f));
}
Does the above stand a chance of being turned into a real Java code?
Thanks for ideas!
-mi
I assume you've looked at:
http://java.sun.com/j2se/1.5.0/docs/guide/language/enums.html
I had a case where I needed to do something similar to this, and I tried
overriding a method on each element of the enum. I didn't like defining
big methods inside the constructor, so I actually went with the method
described in the article that uses a switch.
So you would have one method defined in the enum like:
public String extract( Resultset arg ){
switch ( this )
{
case FIELD1:
return arg.getString();
case FIELD2:
return arg.getDouble();
...
case FIELDN:
return resultSet.getTimestamp();
}
}
then you could iterate over the values of the enum and do f.extract(rs)
-marty
polymorphic.