Java中接口回调

前几天遇到一个问题。 android 主项目中执行 库中的方法,结果库中需要用到一些 只有主项目中才存在的东西。 没有办法,只能通过接口再回调到 主项目中。于是来了一个大循环。你们可能会说这样写不好。  我只能说,不是我设计的,不是我设计的,不是我设计的,而我还必须要完成这个进度。  大概思路是 3 中的代码实现。

 

看见别人说的很形象。转过来,理解一下基本概念:

理解的接口回调就是,我这个类实现了一个接口里的方法doSomething,然后注册到你这里,然后我就去做别的事情去了,你在某个触发的时机回头来调用我doSomething的方法。好比,我给你打电话问某个难题,你电话里想不出来,于是说等想到了再回我电话。(转)

 

1, 代码实现(无参数,无返回值):

public class Demo {
	public static void main(String[] args) throws InterruptedException {
		// TODO Auto-generated method stub
		
		// 我实现接口,等着你的电话。
		HandlerInterface handlerInterface = new HandlerInterface() {
			
			@Override
			public void deal() {
				// TODO Auto-generated method stub
				System.out.println("回调");
			}
		};
		Thread.sleep(3000); // 做一些事情。
		handlerInterface.deal(); // 打电话告诉我,我想出问题了。

	}
	
	// 定义接口
	public interface HandlerInterface{
		void deal();
	}
}


 2, 代码实现( 有参,无返回值)

 

 

 

 

public class Demo {
	public static void main(String[] args) throws InterruptedException {
		// TODO Auto-generated method stub
		
		// 我实现接口,等着你的电话。
		HandlerInterface handlerInterface = new HandlerInterface() {
			
			@Override
			public void deal(String an) {
				// TODO Auto-generated method stub
				System.out.println(an);
			}
		};
		Thread.sleep(3000); // 做一些事情。
		handlerInterface.deal("答案"); // 打电话告诉我,我想出问题了。

	}
	
	// 定义接口
	public interface HandlerInterface{
		void deal(String an);
	}
}

 

 

 具体的在项目中,通常在两个类之间使用,道理是一样的。下面的代码用两个类,模拟两个人。

 

3,两个类。People1 问 People2 问题。

 

public class People1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		// 我已经实现,监听着,等着people2告诉我
		People2 people2 = new People2(new HandlerInterface() {
			
			@Override
			public void deal(String an) {
				// TODO Auto-generated method stub
				System.out.println("答案是:"+an);
			}
		});
	}
}

 

 

public class People2 {
	
	private HandlerInterface handlerInterface;

	public People2(HandlerInterface handlerInterface) {
		this.handlerInterface = handlerInterface;
		handlerInterface.deal("答案");  //告诉 people1答案。在满足条件的时候调用。
	}

	// 定义接口
	public interface HandlerInterface {
		void deal(String an);
	}

}

 

 

 

Over。

 

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值