这是一个简单的回调函数,Receive调用Timer类,Time生成当前时间回调Receive类的show方法打印出来。
1.回调接口CallBack类
package Call; @FunctionalInterface public interface CallBack<T> { void cBack(T t); }
2.工具类Timer
package Time; import java.time.LocalDateTime; import java.time.LocalTime; import java.util.ArrayList; import java.util.List; import Call.CallBack; public class Timer extends Thread{ public List<CallBack<LocalDateTime>> callList = new ArrayList<CallBack<LocalDateTime>>(); @Override public void run() { try { while(true) { doRun(); sleep(1000); } } catch (Exception e) { e.printStackTrace(); } } private void doRun() { for(CallBack<LocalDateTime> c : callList) { c.cBack(LocalDateTime.now()); } } }
3.回调类Receive
package Demo; import java.time.LocalDateTime; import java.time.LocalTime; import Call.CallBack; import Time.Timer; public class Receive { public Timer timer; public Receive(){ timer = new Timer(); timer.callList.add(new CallBack<LocalDateTime>() { @Override public void cBack(LocalDateTime t) { show(t); } }); } protected void show(LocalDateTime t) { System.out.println("当前时间为:"+t); } public static void main(String[] args) { new Receive().timer.start(); } }