Java的动态代理初涉
来源:互联网 发布:k歌软件电视 编辑:程序博客网 时间:2024/04/30 22:34
作为一个应届本科生,参加了几场校园招聘笔试面试后,深感自己的能力的不足,C++在校期间学的还可以,但还不够深入,因为希望今后从事的是Java方向的。所以像C++primer effictive C++ 等经典的书都没看。所以c++不是很强,但在Java方面,虽然做过一些项目,面试官深问起来还是有很多东西了解的不够深入,于是决心还是一门心思好好学习吧。动态代理,之前涉猎过,蜻蜓点水,知道是那么回事,现在想想“涉猎”是我的弱点,很多东西得刨根问底。不过鉴于水平还是太菜,就先一点点的深入吧,先把动态代理搞定,再看类的加载机制,再看虚拟机,貌似spring还有一个动态生成字节码的东东,提到日程上来吧。如有过来人看到,希望能够对小菜一番指教,小菜定不胜感激。
下面是一个简单的动态代理的例子。
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class DynamicProxy implements InvocationHandler,DynamicProxyInterface{
/**
* @param args
*/
private Object obj;
public DynamicProxy (Object o ){
this.obj = o;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
List<String> list = ((List<String>) factor(new ArrayList<>()));
list.add("hello ");
list.add("world");
Set set = (Set) factor(new HashSet<>());
set.add("HELLO");
set.add("WORLD");
DynamicProxy real = new DynamicProxy(new Object());
DynamicProxyInterface dp = (DynamicProxyInterface) factor(new DynamicProxy(new Object()));
dp.sayHello();
}
@Override
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
// TODO Auto-generated method stub
System.out.println("方法调用前");
Object objt = method.invoke(obj, args);
if(null!=args)
System.out.println(args[0]);
System.out.println("方法调用后");
return objt;
}
public void sayHello(){
System.out.println("hello");
}
public static Object factor(Object obj)
{
Class<?> classType = obj.getClass();
for(Class<?> in :classType.getInterfaces())
System.out.println(in.getName());
return Proxy.newProxyInstance(classType.getClassLoader(), classType.getInterfaces(), new DynamicProxy(obj));
}
}
- Java的动态代理初涉
- Java的动态代理
- JAVA的动态代理
- java的动态代理
- java的动态代理
- JAVA的动态代理
- JAVA的动态代理
- JAVA的动态代理
- JAVA的动态代理
- JAVA的动态代理
- java的动态代理
- JAVA的动态代理
- Java的动态代理
- Java的动态代理
- java的动态代理
- Java的动态代理
- java的动态代理
- Java的动态代理
- 应用层反WG技术研究
- 解决ubuntukylin下各种终端字母重叠的方案
- HDOJ 5058 So easy
- immutable类
- RTL8192SU移植到ok6410
- Java的动态代理初涉
- eclipse 的Debug 技巧
- 黑马程序员——面向对象9:对象的初始化&方法的调用
- 黑马程序员——Foundation结构体和常用类
- jQuery官方基础教程笔记
- 从印象笔记搬移到博客
- Single Number
- 时间都去哪了
- 3D 打印 资料记录整理