首页 > 代码库 > java编程思想笔记20170126
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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。