java编程思想笔记20170126

Posted 东湖小浪

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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被传递给匿名类的基类的构造器,它并不会在匿名类内部被直接使用。

 

以上是关于java编程思想笔记20170126的主要内容,如果未能解决你的问题,请参考以下文章

Java编程思想笔记-类的初始化顺序

Java编程思想 学习笔记12

<java编程思想>第一章读书笔记二

异常笔记--java编程思想

Java编程思想 学习笔记5

Java编程思想笔记 —— 内部类