Re: enums, using methods as initializers
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
Yes, kind of. You won't be able to pass in a method, but you can create
a delegate method easily.
I have an example here actually:
<http://virtualinfinity.net/wordpress/program-design/2007/10/22/using-enums-as-a-flyweight-pattern/>
enums are full classes, so you can add methods to them, and even add an
abstract method to the base enum type (Field in your case) and override
those methods in the subtypes (FIELD1 FIELD2, etc...) .
--
Daniel Pitts' Tech Blog: <http://virtualinfinity.net/wordpress/>