Java回调方法

时间:2010-11-12 12:34:44

标签: java

有人可以帮助学习如何在java中使用注释实现回调方法吗?

更多细节 -

基本上,我有一个不返回任何内容的java方法[void]但是我希望它在不使用回调函数更改方法签名的情况下将对象的状态返回给调用者。希望有所帮助。

谢谢!

3 个答案:

答案 0 :(得分:8)

很简单。

在某个类或接口的某个地方,你有一个应该调用的方法: [access modifier] [return type] name([parameter list])...

例如:

public void callback()

然后在某个类中,您要么覆盖该方法,要么实现它,或者其他什么。然后在执行回调的代码中,您将获取具有回调方法的类的类型的参数。例如:

public interface Callback
{
   public void callback();
}



public class Callbackee implements Callback {
   public void callback()
   {
      System.out.println("Hey, you called.");`
   }

   static{
    new Callbackee().doCallback();
   }
}

public class CallBacker {
    Callback call;

    public void registerCallback(Callback call) {
       this.call=call;
    }

    //then just do the callback whenever you want.  You can also, of course, use collections to register more than one callback:

    public void doCallback() {
       call.callback();
    }
}

如果要查看Java API中的回调方法示例,请查看MouseListener,MouseMotionListener,KeyListener等。通常,您当然可以注册多个回调。

答案 1 :(得分:2)

这是一个很好的教程:

http://slesinsky.org/brian/code/annotated_callback.html

虽然我不确定这是否是您正在考虑的事情。

答案 2 :(得分:0)

您可以将Callback方法包装在http://download.oracle.com/javase/1.4.2/docs/api/java/awt/event/ActionListener.html类中,然后调用ActionListener #actionPerformed(ActionEvent ev)