关闭

java超简单的android安卓回调函数的小范例理解

标签: 回调java回调android回调安卓回调范例回调小例子
393人阅读 评论(0) 收藏 举报

     首先要申明回调的概念不是安卓的,而是java的,所以当你卡在安卓的回调函数理解上的时候,不妨先看完这篇文章,也许会给你一些启示。

 

     在理解回调前,在网上找了很多很多的安卓回调的案例,但是都理解不了,我怀疑我的理解能力有问题,但相信比我聪明的你能够得到你想要的知识。

 

     首先,我们要理解,为什么要用回调?回调有什么好处?回调主要是能给代码解耦,增加代码的重用性,那让我们一起来看看这段代码。

 

     一开始,我把代码全部写在一个名为Test的java文件里,跟回调无关,代码很简单。直接看:

 

public class Test {

//正常程序流程,第三步要实现的方法不会写,先调出去给别人写

public static void paint(MyPaint f){

System.out.println("第一步");

System.out.println("第二步");

System.out.println("第三步不会写");

f.mypaint();  //这里相当于一个钩子,你main方法里调用哪个类,这里就实现什么方法,调用第一个类就实现第一个类中重写的方法,调用第二个类就实现第二个类中重写的方法,很好的保障了代码的重用性。

System.out.println("第四步");

}

 

public static void main(String[] args){

paint(new Test1Paint());

paint(new Test2Paint());

}

}

//定义一个接口,在接口里定义一个方法,所有实现这个接口的类都要重写接口中的方法

public interface MyPaint {

public void mypaint();

}

//第一个实现了接口里的方法并重写

class Test1Paint implements MyPaint{

public void mypaint() {

System.out.println("Test---1---Paint的方法");

}

}

//第二个实现了接口里的方法并重写

class Test2Paint implements MyPaint{

public void mypaint() {

System.out.println("Test---2---Paint的方法");

}

}

 

 

 

 

接下来要完成的是将这些代码解耦:

思路,1、接口与实现接口的类可以放在一个java文件中,2、程序正常流程放在一个java文件中,3、main方法放在一个文件中,因此,我的最终代码是这样:


第一个文件:Test.java


<span style="font-size:14px;">package com.tuzhi.www;

 

public class Test {

public static void main(String[] args){

TestPaint test=new TestPaint();

test.paint(new Test1Paint());

test.paint(new Test2Paint());

}

}</span>


 

第二个文件:MyPaint.java


<span style="font-size:14px;">package com.tuzhi.www;

 

public interface MyPaint {

public void mypaint();

}

 

class Test1Paint implements MyPaint{

public void mypaint() {

System.out.println("Test---1---Paint的方法");

}

}

 

class Test2Paint implements MyPaint{

public void mypaint() {

System.out.println("Test---2---Paint的方法");

}

}</span>


 

第三个文件:TestPaint


<span style="font-size:14px;">package com.tuzhi.www;

 

public class TestPaint {

public void paint(MyPaint f){

System.out.println("第一步");

System.out.println("第二步");

System.out.println("第三步不会写");

f.mypaint();

System.out.println("第四步");

}

}</span>


 

当然,我是小白,大家觉得哪里讲得不对的地方,欢迎指正,共同进步!

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:11018次
    • 积分:350
    • 等级:
    • 排名:千里之外
    • 原创:25篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条