Java 回调和接口之间的区别
这两段代码之间有什么区别Java 回调和接口之间的区别,java,android,oop,interface,callback,Java,Android,Oop,Interface,Callback,这两段代码之间有什么区别 btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { } }); 是视图类的内部接口,如果我们知道该接口不能实例化的话 这里呢 soInterface.getAnswers().enqueue(new Callback<SOAnswersResponse>() {
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
是视图类的内部接口,如果我们知道该接口不能实例化的话
这里呢
soInterface.getAnswers().enqueue(new Callback<SOAnswersResponse>() {
@Override
public void onResponse(Call<SOAnswersResponse> call, retrofit2.Response<SOAnswersResponse> response) {
}
@Override
public void onFailure(Call<SOAnswersResponse> call, Throwable t) {
}
});
soInterface.getAnswers().enqueue(新回调()命令){
@凌驾
公共void onResponse(呼叫,改装2.响应){
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
}
});
它在enqueue方法中需要的回调,这个语法定义的,是接口“callback”,在某些地方定义的,我们在这里把它称为内联接口,但接口不能像回调语法所说的“newcallback(){}”那样实例化
这两段代码之间有什么区别
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
两者都是2个不同的接口
查看。OnClickListener
-此界面帮助您收听查看单击操作
回调
-尝试从服务器获取响应同时查看视图。OnClickListener
和回调
是接口
OnClickListener
嵌套在View
类中。改装回调
未嵌套
这是回调
接口文档:
接口无法实例化
我们在这里实例化一个匿名类。i、 e.我们将接口
实现为一个匿名类
,并动态实例化该匿名类
从Java:
它们[匿名类]使您能够声明和实例化一个类
同时,。他们和当地的班级一样,只是他们没有
有名字。如果只需要使用一次本地类,请使用它们
在本例中,两个类都是带有回调的接口。匿名类实现了View.OnClickListener
,它在onClick
上有一个回调。实现Callback()
的匿名类也是如此。这一次,它有一个类型化参数和两个用于onResponse
和onFailure
的回调
接口不能被实例化的语句是true,但是您可以创建它的匿名类。请参见它们都是接口:
- CallBack表示改装的响应(回调),当它出现时,您进入onResponse或它无法恢复(在10秒时间内)、被读取(错误解析)或其他原因,然后将执行onFailure
- 当onClickListener正在收听时,单击按钮
您可以在活动或片段中实现onClick listener的接口,并使用按钮。SetOnClick listener(此)与改装相同。您是正确的,无法实例化接口。接口是必须由具体类实现的一组方法的定义
在这两种情况下,您的代码使用的都是匿名内部类。Java语法允许您指定您想要实现指定接口的“某物”的新实例,但您不想编写所有代码来实现该接口。您的代码只提供该接口定义的抽象方法的实现
如果您查看应用程序的类文件,您将看到类似MyClass$1.class的内容,它是由编译器合成生成的类文件。编译器创建一个名为MyClass$1的类,该类实现您用定义的方法指定的接口。然后,编译器会在编译代码之前使代码看起来像这样:
btn.setOnClickListener(new MyClass$1());
这同样适用于第二个示例,但使用了不同的接口,等等。这意味着回调是接口,而不是视图中的内部类接口。onclicklistener,是的,这只是一个接口。您可以在任何地方定义接口,在View.onclicklistener中,它们在View.java中都很好,但语法是新的回调(){}这似乎是它的实例化,我们知道接口不能被实例化它们的接口名为回调,就像onclicklistener,这只是一个名称,而接口(和其他抽象类一样)不被实例化,是实现给定接口(或扩展抽象类)的匿名内部类可以用以下形式实例化:newinterface(){…抽象方法的实现…}
是不同于我们在Interface中定义的方法的抽象方法Java中的接口是一个抽象类,所有方法都是public abstract
,所有变量都是public static final
。。。好的,至少在Java8函数接口之前……谢谢:)你们能给出任何关于接口作为匿名类实现的链接吗,这些东西需要解释一下吗