An interface is the easiest option - an annotation would do too, but would feel a little stranger I think. [craigmcc] You can actually have this one both ways, as we do in Shale -- define an Action interface for the JDK 1.4 users, and provide an optional JavaSE 5 layer that lets you define the appropriate callbacks with annotations instead.