java接口回调例子(java中怎样定义回调函数)

本文目录
- java中怎样定义回调函数
- java回调函数问题
- 有关接口回调的java题,求解
- java 接口回调例子怎么像抽接口
- JAVA里面方法回调是什么意思
- 请问JAVA中接口中自动回调方法的原理是什么
- 什么是接口回调方式 有具体例子吗
- JAVA 回调功能 实现方法
- java 如何写回调方法
- Java:关于接口回调~~~~~~~看不懂啊!~~
java中怎样定义回调函数
程序员A写了一段程序(程序a),其中预留有回调函数接口,并封装好了该程序。程序员B要让a调用自己的程序b中的一个方法,于是,他通过a中的接口回调自己b中的方法。目的达到。在C/C++中,要用回调函数,被掉函数需要告诉调用者自己的指针地址,但在JAVA中没有指针,怎么办?我们可以通过接口(interface)来实现定义回调函数。\x0d\x0a假设我是程序员A,以下是我的程序a:\x0d\x0a)\x0d\x0a{\x0d\x0aCallercall=newCaller();\x0d\x0acall.setCallfuc(newB());\x0d\x0acall.call();\x0d\x0a}\x0d\x0a}
java回调函数问题
下面使用java回调函数来实现一个测试函数运行时间的工具类: 如果我们要测试一个类的方法的执行时间,通常我们会这样做: java 代码 public class TestObject { /** * 一个用来被测试的方法,进行了一个比较耗时的循环 */ public static void testMethod(){ for ( int i= 0 ; i《 100000000 ; i++){ } } /** * 一个简单的测试方法执行时间的方法 */ public void testTime(){ long begin = System.currentTimeMillis(); //测试起始时间 testMethod(); //测试方法 long end = System.currentTimeMillis(); //测试结束时间 System.out.println(" args) { Tools tool = new Tools(); tool.testTime(new CallBack(){ //定义execute方法 public void execute(){ //这里可以加放一个或多个要测试运行时间的方法 TestObject.testMethod(); } }); } } 大家看到,testTime()传入定义callback接口的execute()方法就可以实现回调功能
有关接口回调的java题,求解
下面是UnitPrice接口代码:
public interface UnitPrice {
public double unitprice();
}
下面是电视机类代码:
public class Television implements UnitPrice {
@Override
public double unitprice() {
return 3500d;
}
}
下面是计算机类代码:
public class Computer implements UnitPrice {
@Override
public double unitprice() {
return 7800d;
}
}
下面是手机类代码:
public class Mobile implements UnitPrice {
@Override
public double unitprice() {
return 2500d;
}
}
下面是公共类代码:
import java.util.Scanner;
public class Common {
static double get(UnitPrice u) {
return u.unitprice();
}
@SuppressWarnings("resource")
public static void main(String args) {
System.out.print("请输入电视机的销售个数:");
Scanner scanner = new Scanner(System.in);
int television_num = scanner.nextInt();
System.out.print("请输入计算机的销售个数:");
scanner = new Scanner(System.in);
int computer_num = scanner.nextInt();
System.out.print("请输入手机的销售个数:");
scanner = new Scanner(System.in);
int mobile_num = scanner.nextInt();
double television_price = television_num * (get(new Television()));
System.out.println("电视机的销额是:" + television_price);
double computer_price = computer_num * (get(new Computer()));
System.out.println("计算机的销额是:" + computer_price);
double mobile_price = mobile_num * (get(new Mobile()));
System.out.println("手机的销额是:" + mobile_price);
System.out.println("总销额是:" + (television_price + computer_price + mobile_price));
scanner.close();
}
}
下面是执行后的效果截图:
麻烦您看一下,是否能够满足要求。
java 接口回调例子怎么像抽接口
(1)先定义一个接口
1 package JieKouHuiDiao;2 //定义一个接口3 public interface JieKou {4 public void show();5 }
(2)定义一个Boss类实现接口
1 package JieKouHuiDiao; 2 3 public class Boss implements JieKou{ 4 //定义一个老板实现接口 5 @Override 6 public void show() { 7 System.out.println("知道了"); 8 } 9 10 }
(3)定义一个员工Employee类
1 package JieKouHuiDiao; 2 3 public class Employee { 4 //接口属性,方便后边注册 5 JieKou jiekou; 6 //注册一个接口属性,等需要调用的时候传入一个接口类型的参数,即本例中的Boss和Employee, 7 public Employee zhuce(JieKou jiekou,Employee e){ 8 this.jiekou=jiekou; 9 return e;10 }11 public void dosomething(){12 System.out.println("拼命做事,做完告诉老板");13 //接口回调,如果没有注册调用,接口中的抽象方法也不会影响dosomething14 jiekou.show();15 }16 17 }
(4)测试类
package JieKouHuiDiao;public class Test {public static void main(String args) {
Employee e=new Employee(); //需要调用的时候先注册,传入Boss类型对象和员工参数
Employee e1=e.zhuce(new Boss(),e);
e1.dosomething();
}
}
JAVA里面方法回调是什么意思
所谓回调,就是客户程序C调用服务程序S中的某个函数A,然后S又在某个时候反过来调用C中的某个函数B,对于C来说,这个B便叫做回调函数。例如Win32下的窗口过程函数就是一个典型的回调函数。一般说来,C不会自己调用B,C提供B的目的就是让S来调用它,而且是C不得不提供。由于S并不知道C提供的B姓甚名谁,所以S会约定B的接口规范(函数原型),然后由C提前通过S的一个函数R告诉S自己将要使用B函数,这个过程称为回调函数的注册,R称为注册函数。Web Service以及Java的RMI都用到回调机制,可以访问远程服务器程序。
下面举个通俗的例子:
某天,我打电话向你请教问题,当然是个难题,^_^,你一时想不出解决方法,我又不能拿着电话在那里傻等,于是我们约定:等你想出办法后打手机通知我,这样,我就挂掉电话办其它事情去了。过了XX分钟,我的手机响了,你兴高采烈的说问题已经搞定,应该如此这般处理。故事到此结束。这个例子说明了“异步+回调”的编程模式。其中,你后来打手机告诉我结果便是一个“回调”过程;我的手机号码必须在以前告诉你,这便是注册回调函数;我的手机号码应该有效并且手机能够接收到你的呼叫,这是回调函数必须符合接口规范。
通过上面个人感觉到回调更多的应用就是结合异步。比如:Ajax中js通过组件和服务器的异步通信。
请问JAVA中接口中自动回调方法的原理是什么
通常情况下,我们创建一个对象,并马上直接调用它的方法。然而,在有些情况下,希望能在某个场景出现后或条件满足时才调用此对象的方法。回调就可以解决这个“延迟调用对象方法”的问题。这个被调用方法的对象称为回调对象。
实现回调的原理简介如下:
首先创建一个回调对象,然后再创建一个控制器对象,将回调对象需要被调用的方法告诉控制器对象。控制器对象负责检查某个场景是否出现或某个条件是否满足。当此场景出现或此条件满足时,自动调用回调对象的方法。
可以举个现实生活中的例子。
一读者想借《编程的奥秘——.NET软件技术学习与实践》这本书,但这本书已被其他读者借走了。于是,读者与图书馆管理员间发生了以下对话:
读者:“我把我的电话号码告诉你,等书一到就马上通知我。”
管理员:“好的。另一读者把书还回来后,马上给您打电话,书我先帮您留着。”
在上述这个场景中,读者就是“回调对象”,管理员就是“控制器对象”,读者的电话号码就是“回调对象的方法”,另一读者的还书事件就是“某一特定的场景”。
什么是接口回调方式 有具体例子吗
首先理解回调的含义,回调就是当主程序需要的时候(或者到预定义状态值)调用的接口实现类。接口实际上不能被直接调用的,我们凡是能调用的一定不是接口或者抽象类。
接口回调的很多应用场景是出现在以接口类型为参数的情况下,以匿名内部类的方式传入而达到。
例如,假设有一个Java的API方法叫作:(其中的ClickEvent就是一个接口)
public void addEventListener(ClickEvent evt);
那么,你在调用的时候就可以这样:
addEventListener(new ClickEvent(){
//在这里实现接口中的方法
});
当发生某事件是,API的addEventListener方法就会被组件调用,从而你的完成的匿名内部类代码就会被组件执行。
仔细想想,其实很不是那么困难的。
JAVA 回调功能 实现方法
接口怎么实现不是回调关心的问题,事实上正式由于不关心接口怎么实现才被称之为回调。。。
本来都是高层策略调用低层支持模块,比如排序调用数组,但在C中我们经常看到集合遍历函数有一个visit的函数指针,这个visit正是回调函数,它可能是打印元素、把元素添加到集合、删除元素等高层策略,而低层的遍历函数不关心这些,它做的只是每找到一个元素就调用一次visit。
C#的委托的确有异步回调,JAVA我记得没有类似委托的实现。
JAVA只能用接口实现回调。接口回调的特征是一个实例持有一个接口的引用。例如:
interface CallBack
{
execute();
}
Class BaseClass
{
public CallBack executor;
}
这其实是DIP--接口倒置原则所要求的。
java 如何写回调方法
public class Caller
{
public MyCallInterface mc;
public void setCallfuc(MyCallInterface mc)
{
this.mc= mc;
}
public void call(){
this.mc.method();
}
}
接口
public interface MyCallInterface
{
public void method();
}
测试
public class B implements MyCallInterface
{
public void method()
{
System.out.println("回调");
}
public static void main(String args)
{
Caller call = new Caller();
call.setCallfuc(new B());
call.call();
}
}
Java:关于接口回调~~~~~~~看不懂啊!~~
不知道那例子在写什么,我写一个简单的例子给你吧
//定义一个接口叫JieKou,里面有个say方法,因为是接口,所以不需要写实现。
interface JieKou() {
public void say();
}
//定义一个类,实现JieKou接口,必须复写JieKou里的say方法,而且要写实现。
class ShiTiLei implements JieKou () {
public void say() {
System.out.println("HelloWorld");
}
}
//写个类来测试接口调用方法
public class Test() {
//main方法 不解释了
public static void main(String args) {
//定义一个接口类型的引用
JieKou jk = null;
//new 一个实现了这个接口的实体类,放到接口引用里
jk = new ShiTiLei();
//调用say方法,会输出HelloWorld,调用接口的方法,确会执行实体类的方法这就叫接口回调
jk.say();
}
}

更多文章:
androidapp源码免费下载(如何实现APK的反编译得到APK的源码)
2026年9月22日 18:00
service pack 3(操作系统版本升级(SP) Service Pack 3当中的“Service Pack 3”是什么意思)
2026年9月22日 10:20
html代码怎么写大佬教程(html网页的题来个大佬,写代码,题目在图上)
2026年9月22日 10:10
结构体内又一个struct(c++ 在结构体中再嵌入一个结构体如何调用)
2026年9月22日 09:40
cocos creator中文(cocoscreator和cocoscreator3d的区别)
2026年9月22日 02:30






