Re: Can this callback mechanism be generified?
Does this work? I didn't try it. I think the "doCallback()" method is
ok without parameterized types... same with putting an unparameterized
type into the map.
OTOH doesn't generics just insert the casts for you? I don't think you
are saving any execution time here, and the code does not necessarily
look more clear to me.
Casper Bang wrote:
1 interface Callback
interface Callback<C>
2 {
3 String format(Object object);
String format( C Object );
4 }
5
6 class Somewhere
7 {
8 Map<Class, Callback> callbacks = new HashMap<Class, Callback>();
9
10 public void installCallback(Class clazz, Callback callback)
11 {
12 callbacks.put(clazz, callback);
13 }
14
15 public void doCallback(Object obj)
16 {
17 Callback callback = callbacks.get( obj.getClass() );
18 if(callback != null)
19 System.out.println( callback.format( obj ) );
20 }
21 }
22
23 somewhereInstance.installCallback( Date.class, new Callback(){
somewhereInstance.installCallback( Date.class, new Callback<Date>(
24 public String format(Date obj)
public String format(Date obj)
25 {
26 Date date = (Date)obj;
Date date = obj;
27 return SimpleDateFormat.getInstance().format(date);
28 }
29 });