在C和C++中,函数的传递可以通过函数指针来实现。在C#中,函数传递可以通过委托、Action、Func来实现。Java中没有函数指针、没有委托,那函数要如何传递呢?
可以通过以下两种方式实现。
1、通过handler,在A类中实例化B类,并传递一个handler到B中。B通过handler发送消息,A中接收到消息后,执行相应的函数。严格的来说,这种不算是函数传递,只是变相达到了函数调用的目的。
2、通过接口来实现。下面是实现的代码。
ICallback.java
package com.sparkle.sgmjl; public interface ICallback { abstract void callback(String data); }
在A类中传递ICallback给B类,代码如下。
ClassA.java
ClassA classA=new ClassA( new ICallback() { @Override public void callback(String data) { Test(data); } }); private void Test(String data) { Log.e("TEST",data)) }
public ClassB(ICallback icallback) { icallback("Call OK"); }