欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

在Java中:无名子类(匿名内部类)的实现与应用

最编程 2024-07-19 12:51:55
...
知识共享许可协议
知识共享许可协议

版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons

一、问题的出现

 最近在翻看《Java并发编程实战》一书的时候,看到了一段令人费解的代码,在使用new关键字进行构造方法的时候,后还加了大括号{…},并且写了一个方法。

	private static ThreadLocal<Connection> connectionHolder
		= new ThreadLocal<Connection>(){
			public Connection initialValue(){
				return DriveManager.getConnection(DB_URL);
			}
		};

二、问题的解决

 此处语法是Java的匿名子类。匿名子类的格式是就是 方法名(new 构造器){ 调用方法/重写方法 }

	public class Demo_ThreadLocal {
    public static void main(String[] args) {
        Test t = new Test() {
            @Override
            public void method1() {
                System.out.println("2222222222222");
            }
        };
        t.method1();
        Test t2 = new Test() {
            public void method1() {
                super.method3();
                System.out.println("222222222222222");
            }
        };
        t2.method1();
	    }

	}

	class Test {
    public void method1() {
        System.out.println("11111111111111");
    }
    public void method3(){
        System.out.println("333333333333");
 	   }

	}

 如果子类构造器中对父类方法进行重写,那么就调用重写的方法,这就是匿名子类的语法特性与目的。我们既可以在匿名子类中进行调用父类的方法,也可以在匿名子类中重写父类的方法以及直接调用父类方法。

推荐阅读