列挙単例モード
2302 ワード
Java 。 , , , , 。
:
public enum TestEnum {
TEST_ENUM;
}
TEST_ENUM, TestEnum 。 , 。 。 CGLib 。 :
エージェントクラス
import java.lang.reflect.Method;
public enum CGLibProxyEnum implements MethodInterceptor {
CG_LIB_PROXY_ENUM;
public T getProxy(Class cls) {
return (T)Enhancer.create(cls, this);
}
@Override
public Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable {
return methodProxy.invokeSuper(o, objects);
}
}
テストクラス
class Hello {
public void sayHello() {
System.out.println("Hello, new Boys");
}
}
public class Test {
public static void main(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 , 。