• 6-4 内部类


    package innerclass;
    
    import java.awt.Toolkit;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    import javax.swing.Timer;
    
    public class InnerClassT {
    
        public static void main(String[] args) {
    
        }
        
        /**
         * 1.局部内部类
         * 类不能用public 或者 private修饰
         * 
         * 只有start方法才可以访问
         * 
         * 2.外部方法访问变量
         *  执行actionPerformed方法的时候,局部变量已经销毁---->
         *  编译器在内部类构造实例化的时候拷贝一份局部变量
         *  局部变量声明为final,保持局部变量和局部类的拷贝保持一致。(若想实现累计可以声明一个数组)
         *  
         *  3.匿名内部类
         * 
         */
    
        class TalkClass{
            
            /*    int intervel;
            boolean beep;
            
            public void start(){
                class TimePrint implements ActionListener {
                    
                    @Override
                    public void actionPerformed(ActionEvent e) {
                        
                        if (beep) {
                            Toolkit.getDefaultToolkit().beep();
                        }
                    }
                    
                }
                
                ActionListener listener = new TimePrint();
                new Timer(intervel, listener);
            }*/
            
            
            public void start(int intervel,final boolean beep){
                class TimePrint implements ActionListener {
                    
                    @Override
                    public void actionPerformed(ActionEvent e) {
                        
                        if (beep) {
                            Toolkit.getDefaultToolkit().beep();
                        }
                    }
                    
                }
                
                ActionListener listener = new TimePrint();
                new Timer(intervel, listener);
            }
            
            //匿名内部类
            public void startThree(int intervel,final boolean beep){
                ActionListener listener = new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                        if (beep) {
                            Toolkit.getDefaultToolkit().beep();
                        }
                    }
                };
                
                new Timer(intervel, listener).start();;
            }
            
            //lambda表达式   可见 labmda表达式必匿名内部类更简洁
            public void startFour(int intervel,final boolean beep){
                new Timer(intervel, even -> {
                    if (beep) {
                        Toolkit.getDefaultToolkit().beep();
                    }
                } );
            }
            
            
        }
        
    }
  • 相关阅读:
    最小最大数
    ubuntu14.04在虚拟环境中安装flask遇到的问题
    线性时间排序
    NSURLSession详细介绍,以及一些坑位的介绍
    IOS笔记 本地化多语言支持
    Documenting in Xcode with HeaderDoc Tutorial
    高效使用你的Xcode
    Xcode 7遇到 App Transport Security has blocked a cleartext HTTP 错误
    iOS bug解决方案(02)
    CGRect 的使用
  • 原文地址:https://www.cnblogs.com/lxh520/p/8285353.html
Copyright © 2020-2023  润新知