java接口的使用

来源:互联网 发布:js 正则 可有可无 编辑:程序博客网 时间:2024/05/16 00:26

目的:实现不同类型之间的数据通信。

例子1:

借口:

public interface MsgListener {    void onMessageArriverd(String msg);}
数据接收类
public class Receiver implements MsgListener{    @Override    public void onMessageArriverd(String msg) {        Log.i("kelijun","Receiver MSG");        //Toast.makeText(this,"Receiver MSG ",Toast.LENGTH_SHORT).show();    }}
数据发送类
public class Send extends Activity{    private Receiver mReceiver;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        mReceiver=new Receiver();        mReceiver.onMessageArriverd("你好");    }}
这个例子是发送消息给实现了接口的类,直接调用。


例子2:设置消息的监听,如果有消息了,将把消息发送给监听了这个消息的人。如果有很多类 ,设置了监听这个消息,那么这些类都会收到消息。

public interface MsgListener {    void onMessageArriverd(String msg);}

2个接收数据的实现了接口的类

接口

public class Receiver implements MsgListener{    @Override    public void onMessageArriverd(String msg) {        Log.i("kelijun","Receiver MSG");        //Toast.makeText(this,"Receiver MSG ",Toast.LENGTH_SHORT).show();    }}
发送数据的类

public class Receiver1 implements MsgListener{    @Override    public void onMessageArriverd(String msg) {        Log.i("kelijun","Receiver MSG 1");        //Toast.makeText(this,"Receiver MSG ",Toast.LENGTH_SHORT).show();    }}
public class Send extends Activity{    private Receiver mReceiver;    private Receiver1 mReceive1;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        mReceiver=new Receiver();        mReceive1=new Receiver1();        setMsgListener(mReceiver);        setMsgListener(mReceive1);        msgListener.onMessageArriverd("你好");    }    private MsgListener msgListener;    public void setMsgListener(MsgListener msgListener) {        this.msgListener = msgListener;    }}

这里是不能达到目的的(测试过,只有后面receiver1才有打印),这个因为很多事情往往只是说如何做可以办到,但是你去做的时候往往结果不一样,就是因为我们人的思路是不一样的,比如有一个人对你说,抢银行赚了很多钱,你不要参照他的做法,你听过一句名言吗?失败是成功之母,所以我们只要学习失败,比如上面的例子,我们要思考为什么不可以,不要背那种方法可以。我觉得这才是学习之路,永远是思考,不是盲从,忙背。

比如我们国家中国,很多时候说什么GDP今天又增加了多少,人们的生活水平又如何升高了,人们是过的很好,我觉的应该把焦点放在失败的地方,比如说今天有多少人做了不喜欢的工作,又有多少人为了省钱饿肚子,看见喜欢的水果舍不得买,这样我们才有动力去完善我们的不足。失败是成功之母,为什么这句话大家不好好实践。把注意力放在不足的地方,然后去学习,去改正啊。

好了,其实我也不清楚上面的接口怎么实现的,那么我去想为什么,怎么才能办得到。

那么我修改一下


setMsgListener(mReceive1);setMsgListener(mReceiver);
发现只有
mReceiver接收到消息,说明只有后面设置监听的人收到消息,前面的被覆盖了。那么我们去找到一种不能被覆盖的方法。
查资料然后改进后:
public class Send extends Activity {    private List<MsgListener> msgListeners;    private Receiver mreReceiver;    private Receiver1 mreReceiver1;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        msgListeners = new ArrayList<>();        mreReceiver = new Receiver();        mreReceiver1 = new Receiver1();        addListener(mreReceiver);        addListener(mreReceiver1);        for (int i = 0; i < msgListeners.size(); i++) {            MsgListener l = msgListeners.get(i);            l.onMessageArriverd("你好");        }    }    public void addListener(MsgListener l) {        msgListeners.add(l);    }}
意思就是,必须要给每一个接口发送消息才行。

原创粉丝点击