• java编程思想笔记20170126


    如果定义一个匿名内部类,并且希望它使用一个在其外部定义的对象,那么编译器会要求其参数引用是final的,如果没有,将会出现一个编译时错误消息

    import com.javabase.chaptersix.Destination;
    
    public class Parcel9 {
        public Destination destination(final String dest){
            return new Destination(){
                private String label = dest;
                public String readLabel(){
                    return label;
                }
            };
        }
        
        public static void main(String[] args) {
            Parcel9 p = new Parcel9();
            Destination d = p.destination("Tasmania");
        }
    }

    通过实例初始化,能够达到为匿名内部类创建一个构造器的效果

    abstract class Base{
        public Base(int i){
            System.out.println("Base constructor, i = " + i);
        }
        public abstract void f();
    }
    public class AnonymousConstructor {
        public static Base getBase(int i){
            return new Base(i){
                {
                System.out.println("Inside instance initializer");
                }
    
                @Override
                public void f() {
                    System.out.println("In anonymous f()");
                }
                
            };
        }
        public static void main(String[] args){
            Base base = getBase(47);
            base.f();
        }
    }

    在上例中,不要求变量i一定是final的。因为i被传递给匿名类的基类的构造器,它并不会在匿名类内部被直接使用。

  • 相关阅读:
    Cmd Markdown 公式指导手册
    ubuntu 21.10 上的一些必备库的安装 opengl, opencv
    MarkDown 数学公式
    免费代理IP地址列表
    pyexecl的使用
    磁盘IO满负荷性能分析
    DRM 简介
    Oracle修改字符集ORA02374,ORA12899,ORA02372
    oracle grid修改ip
    Oracle性能问题一般排查方法
  • 原文地址:https://www.cnblogs.com/919czzl/p/6351444.html
Copyright © 2020-2023  润新知