java接口回调可以用类替代吗
㈠ java 接口回调例子怎么像抽接口
(1)先定义一个接口
1 package JieKouHuiDiao;2 //定义一个接口3 public interface JieKou {4 public void show();5 }
(2)定义一个Boss类实现接口
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中的接口回调与观察者模式有什么不同之处
接口回调, 是Java 多态的一种体现, 可以把使用某一接口的实现类创建的对象的引用, 赋给内该接口容声明的接口变量中, 那么该接口变量就可以调用被实现的接口中的方法, 当接口变量调用被类实现的接口中的方法时,就是通知相应的对象调用接口的方法.
观察者模式, 是将观察者和被观察的对象分离开, 当被观察的对象产生一定变化的时候, 观察者就会根据哪里产生的变化, 产生了变化, 而进行相应的处理.
大部分观察着模式是用接口回调的方法来实现的.
前者是一种体现, 后者是一种用前者实现的模式, 相当于后者调用前者, 他们两个没有可以比较的地方
我还真听话...
㈢ java接口回调 参数的类型不兼容
public double computeArea()看这里 返回值是专属double的
public class Jiekou {
public static void main() {
mianji pp = new mianji ();
double result;
result = pp.jisuan(new circle(2));
System.out.println(result);
}
}
class mianji { public double jisuan(computeArea a) {
return a.computeArea();
}
}
㈣ Java中什么是接口回调
什么是接口回调?1.接口回调是什么[2]?接口回调是指:可以把使用某一接口的类创建的对象的引用赋给该接口声明的接口变量,那么该接口变量就可以调用被类实现的接口的方法。实际上,当接口变量调用被类实现的接口中的方法时,就是通知相应的对象调用接口的方法,这一过程称为对象功能的接口回调。看下面示例。interface People{ void peopleList();}class Student implements People{ public void peopleList(){ System.out.println("I’m a student.");}}class Teacher implements People{ public void peopleList(){ System.out.println("I’m a teacher.");}}public class Example{ public static void main(String args[]){ People a; //声明接口变量a=new Student(); //实例化,接口变量中存放对象的引用a.peopleList(); //接口回调a=new Teacher(); //实例化,接口变量中存放对象的引用a.peopleList(); //接口回调}}结果:I’m a student.I’m a teacher.再来看看向上转型(upcasting)的概念。 2.什么是向上转型[1]?Shape s=new Circle();这里,创建了一个Circle对象,并把得到的引用立即赋值给Shape。通过继承,Circle就是一种Shape。假设你调用基类方法(它已在导出类中被覆盖):s.draw();由于后期绑定(多态),将会正确调用Circle.draw()方法。 3.向上转型与接口回调的区别看似向上转型和接口回调是一回事。看下面两句话,均出自Thinking in Java。使用接口的核心原因:为了能够向上转型为多个基类型[1]。即利用接口的多实现,可向上转型为多个接口基类型(具体见《抽象与接口》章节6)。从实现了某接口的对象,得到对此接口的引用,与向上转型为这个对象的基类,实质上效果是一样的。(此句摘自Thinking in Java 3rd 接口与内部类一章)所以,我认为,这两个概念是从两个方面来解释一个行为。接口回调的概念,强调使用接口来实现回调对象方法使用权的功能(下一章节详细分析)。而向上转型则牵涉到多态和运行期绑定的范畴。 4.用 Java 接口实现回调函数的等价功能熟悉 MS-Windows 和 X Window System 事件驱动编程模型的开发人员,习惯于传递在某种事件发生时调用(即“回调”)的函数指针。Java 的面向对象模型目前并不支持方法指针,Java 的接口支持提供了一种获得回调的等价功能的机制。其技巧就是:定义一个简单接口,并在该接口中声明我们要调用的方法。假定我们希望在某个事件发生时得到通知。我们可以定义一个接口:InterestingEvent.javapackage org.zj.sample;public interface InterestingEvent { public void interestingEvent ();}这使得我们可以控制实现该接口的类的任何对象。因此,我们不必关心任何外部类型信息。发出事件信号的类必须等待实现了 InterestingEvent 接口的对象,并在适当时候调用 interestingEvent() 方法。EventNotifier.javapackage org.zj.sample;public class EventNotifier { private InterestingEvent ie; private boolean somethingHappened; public EventNotifier(InterestingEvent event) { ie = event; // 保存事件对象以备后用。 somethingHappened = false; // 还没有要报告的事件。 } public void doWork() { if (somethingHappened) { // 检查设置的谓词。 ie.interestingEvent();// 通过调用接口的这个方法发出事件信号。 } } public void setHappened(){//设置谓词。 somethingHappened=true; }}在上例中,使用 somethingHappened 谓词来跟踪是否应触发事件。希望接收事件通知的代码必须实现 InterestingEvent 接口,并将自身引用传递给事件通知程序。CallMe.javapackage org.zj.sample;public class CallMe implements InterestingEvent { @SuppressWarnings("unused") private EventNotifier en; public CallMe() { // 注意 EventNotifier (InterestingEvent event),应该传递一个接口类型。 // 而下面将this,即实现了InterestingEvent接口的CallMe实例传递给//EventNotifier。也就是所谓的接口回调了。 en = new EventNotifier(this); // 创建事件通知程序,并将自身引用传递给它。 } // 为事件定义实际的处理程序。
㈤ java的接口回调在什么情况下使用这样做有什么好处
你用了Spring就知道 平时一般我们会把常用的方法封装在接口里面 ,然后去实现这个接回口 重写里面的方法答, 接口回调 说白了 就是通过接口 来调用接口里面的方法 面向接口编程 接口.方法名,如果搂在学了Spring你就知道了 什么叫接口编程了 里面会大量使用 接口来调用方法,其实这个跟你讲 还不是特别好讲 这个就必须结合Spring框架来跟你讲了 估计你要晕 等你学了SPring 我相信你就明白了 希望我的回答对搂主有所帮助 欢迎继续提问 谢谢
㈥ 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都用到回调机制,可以访问远程服务器程序。
同在一个系统里面的时候可以不使用回调接口,因为知道如何回调。一般来说都是回调接口的,因为接口告诉你如何回调,但是如果你已经知道如何回调的时候,可以不实用接口。
㈦ 给个Java接口回调的例子
/**
* 回调接口
*/
interface TestTemplateCallBack {
Object doSomething();
}class Template2 { /**
* 执行业务逻辑的方法,参数类型为接口对象
*
* @param callBack:TestTemplateCallBack接口对象
*/
public void execute(TestTemplateCallBack callBack) {
try {
System.out.println("事务开始。。。");
System.out.println("开始执行业务逻辑。。。");
callBack.doSomething();
System.out.println("业务逻辑执行成功,提交事务");
} catch (Exception e) {
System.out.println("出现错误,回滚");
e.printStackTrace();
}
}
}public class TemplateTest2 {
public void insert(final String msg) {
Template2 t = new Template2();
// 匿名内部类重写方法
t.execute(new TestTemplateCallBack() {
public Object doSomething() {
// 事务出错代码
// int i = 1 / 0;
System.out.println("插入数据:" + msg);
return null;
}
});
} public static void main(String[] args) {
TemplateTest2 t = new TemplateTest2();
t.insert("Hello");
}
}
在这里申明一个接口,里面有个方法doSomething()。Template2 这个类中的execute()方法用来执行事务,其中有个参数:execute(TestTemplateCallBack callBack),参数类型为之前定义的接口对象,然后就可以利用这个对象来调用doSomething()方法。但是doSomething()方法具体的操作内容在哪呢?它在TemplateTest2的insert()方法里面,这里在TemplateTest2类中定义一个insert()方法,接着申明一个Template2对象t,当执行t.execute()方法的时候,这时我们写个匿名类来当传入参数,这匿名类就是之前的接口,在匿名类中重写doSomething()方法就可以实现具体操作了。实际的列子可以参考spring源码中的JdbcTemplate类。
㈧ Java 的回调函数是不是 抽象函数(抽象类) 和 接口类 都可以实现
这个可以用啊,你在回调的时候实现一下就可以了,比如说接口
㈨ Java中什么是接口回调
接口回调是指:可以把使用某一接口的类创建的对象的引用赋给该接口声明的接口变量,那么该接口变量就可以调用被类实现的接口的方法。实际上,当接口变量调用被类实现的接口中的方法时,就是通知相应的对象调用接口的方法,这一过程称为对象功能的接口回调。看下面示例:
interfacePeople{
voidpeopleList();
}
classStudentimplementsPeople{
publicvoidpeopleList(){
System.out.println("I’mastudent.");
}
}
classTeacherimplementsPeople{
publicvoidpeopleList(){
System.out.println("I’mateacher.");
}
}
publicclassExample{
publicstaticvoidmain(Stringargs[]){
Peoplea;//声明接口变量
a=newStudent();//实例化,接口变量中存放对象的引用
a.peopleList();//接口回调
a=newTeacher();//实例化,接口变量中存放对象的引用
a.peopleList();//接口回调
}
}
结果:
I’mastudent.
I’mateacher.
㈩ java上转型对象和接口回调的区别 感觉这两段代码没啥区别呀,帮忙解释下谢谢
interface A1这是接口class a extends A1这是抽象类。
具体区别:网页链接
抽象类(abstract class)
定义:包含抽象方法的的类是abstract class
用abstract关键字修饰
作用:abstractclass是为了把相同的东西提取出来,即重用
使用abstractclass语法规定
定义:比abstract class更加抽象,是一种特殊的abstract class
用Interface关键字修饰
作用:Interface是为了把程序模块进行固化的契约,是为了降低偶合
使用Interface的语法规定
语法
备注
抽象类定义用abstract关键字修饰 要通过子类进行实例化
抽象类是不能被实例化的 要通过子类进行实例化
子类必须重写父类的所有抽象方法 抽象方法:声明但却未被实现的方法,用abstract关键字修饰
含有抽象方法的类一定是抽象类,但是抽象类不一定含有抽象方法 无
抽象类是用来被它的子类继承的 关键字extends
抽象类是在功能上的一个规定 无
Interface
语法
备注
接口定义用Interface关键字修饰
接口中的所有方法都是抽象的 可以用abstract修饰,也可以省略
接口中的方法必须是用public修饰,或不写 但是不能被其他修饰符修饰
接口中的属性必须是全局常量 publicstaticfinal修饰
抽象类是用来被它的子类实现的 关键字Implements
抽象类是在结构上的一个规定 无
接口不能被实例化 无
子类实现接口时需要实现接口中的所有方法 若有一个未不实现,该子类就是抽象类abstractclass