几种常见语言的基本语法对比:回调 事件 -java

java 发现居然不明确支持函数指针。 c#有 delegate . oc 有 函数指针。c++就不用说了。连很多脚本语言都有。 

这么重要的功能都不是第一公民。。java 这样都能排第一 。肯定有牛逼的地方。以后还要再深入学下 java。

没有函数指针,那就 接口先实现下。看看以后有什么更好的办法。

接口类

package com.linson;

public interface IMyButton 
{
    public void OnClickMyButton(Mybutton btn);
}

button.

package com.linson;

public class Mybutton 
{
    public String mMyID;
    public IMyButton btnHandle;
    
    public Mybutton(String myid,IMyButton handle)
    {
        mMyID=myid;
        btnHandle=handle;
    }
    
    public void OnClick()
    {
        if(btnHandle!=null)
        {
            btnHandle.OnClickMyButton(this);
        }
    }
}

page

使用了私有和内部类,和匿名内部类 。 分别来实现我们的功能。

原来java还可以内部类。这样也行。有合适的话。就不用新开文档来建立一个非复用类

不过 要是提供 函数指针 类似功能 就更方便。如 委托 。

package com.linson;

public class MyPage 
{
    public Mybutton btn_ok;
    public Mybutton btn_cancel;
    
    public MyPage()
    {
        btn_ok=new Mybutton("add", new OnClickadd());//私有外部类
        //btn_cancel=new Mybutton("cancel", new OnClickCancel());//内部类
        
        //匿名内部类.
        btn_cancel=new Mybutton("cancel", new IMyButton() {
            public void OnClickMyButton(Mybutton btn) {
                System.out.println("inner class: click cancel button");
            }
        });
        
    }
    
    
    
    //内部类
    class OnClickCancel implements IMyButton
    {
        @Override
        public void OnClickMyButton(Mybutton btn) 
        {
            System.out.println("click cancel button");
        }
    }
}


//私有外部类
class OnClickadd implements IMyButton
{

    @Override
    public void OnClickMyButton(Mybutton btn) 
    {
        System.out.println("click add button");
    }
}

主函数:

public class HelloWord implements IShowBase
{
    public static void main(String[] args) 
    {
        //Study_io();
        MyPage indexpage=new MyPage();
        indexpage.btn_ok.OnClick();
        indexpage.btn_cancel.OnClick();
    }
原文地址:https://www.cnblogs.com/lsfv/p/9605990.html