• 几种常见语言的基本语法对比:回调 事件 -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();
        }
  • 相关阅读:
    HihoCoder 1245:王胖浩与三角形 三角形边长与面积
    C++ 读写注册表
    Codestorm:Counting Triangles 查各种三角形的个数
    2015年10月之 叽里咕噜
    HDU 5523:Game
    Codestorm:Game with a Boomerang
    关于GPU-driver for linux的资料
    ACER NV47H75C 安装CUDA 驱动以及调整屏幕
    服务器GTX590安装CUDA
    观后感,读了几篇博文
  • 原文地址:https://www.cnblogs.com/lsfv/p/9605990.html
Copyright © 2020-2023  润新知