На С++ я бы написал вот так:
class Worker
{
public:
void work1() { }
void work2(int i) {}
};
template<typename T>
class WorkWrapper
{
private:
T handler;
public:
WorkWrapper(T h):handler(h) {}
void start()
{
// preExecute()
handler();
// postExecute()
}
};
//...
Worker worker;
WorkWrapper<boost::function<void()> >wrapper1(boost::bind(&Worker::work2,&worker,1));
wrapper1.start();
WorkWrapper<boost::function<void()> >wrapper2(boost::bind(&Worker::work1,&worker));
wrapper2.start();
А как подобное поведение можно реализовать на Java ?