将匿名函数传递给方法,存储并执行它?

时间:2013-05-21 07:34:08

标签: java android

我需要将一个函数传递给方法,将它存储在类中可见的一些变量上,并最近执行它(不带参数)。

在ActionScript 3中,它将是:

private var lateCall : Function;
..

function getTheLateCall( o : Function ) : void
{
   lateCall = o;
}
...

function someFunction() : void
{
   lateCall();
}
  • Java中是否存在相同的内容?

2 个答案:

答案 0 :(得分:6)

在Java中,您无法传递函数。你可以做的是用方法创建一个接口,并使这个接口成为你的函数的参数:

public interface MyInterface {
    void method();
}

public void myFunction(MyInterface itf) {
   // store itf reference
}

现在,您可以创建anonmymous接口实现并在调用myFunction时传递它:

myFunction(new MyInterface() {
    void method() {
        // Your code here
    }
});

答案 1 :(得分:5)

没有

你可以有替代品,一个可以通过interface

interface IFunc {
   void someFunction();
}
class Func1 implements IFunc
{
   void someFunction(){..}
}
class Func2 implements IFunc
{
   void someFunction(){..}
}
void getTheLateCall(IFunc func)
{
   func.someFunction();
}

因此调用者将实例化特定的IFunc实现并将其传递给getTheLateCall。但这只是一种做法..