class Hello {
publicvoidsayHello() {
System.out.println("Hello, new Boys");
}
}
publicclass Test {
publicstaticvoidmain(String[] args) {
Hello helloProxy = CGLibProxyEnum.CG_LIB_PROXY_ENUM.getProxy(Hello.class);
helloProxy.sayHello();
}
}
测试结果打印:Hello, new Boys
上面的CGLibProxyEnum枚举类实现了MethodInterceptor接口,并重写了其中的intercept方法。在其内部创建了唯一的实例CG_LIB_PROXY_ENUM;这是由其默认的私有的构造器创建的。
这里可以看出,枚举单例模式非常简单,易于实现,且类型安全。而且有着和普通类一样的基本功能。并且枚举类默认final修饰,不允许被继承。