我在java中实现了一个类似ruby的send方法,我认为它已经实现了动态调用,我的问题是我还需要java动态代理吗?
这是我的代码:
/**
* Created by roroco on 12/8/14.
*/
final class C {
public void methInC(String arg) {
System.out.println(arg + "\t\t" + new Exception().getStackTrace()[0].getFileName() + ":" + new Exception().getStackTrace()[0].getLineNumber());
}
}
class C2 {
C c;
public C2() {
this.c = c;
}
public void send(String methName, Object... args) {
try {
ArrayList types = new ArrayList();
for (Object o : args) {
types.add(o.getClass());
}
Class[] klsColl = (Class[]) types.toArray(new Class[]{});
C.class.getDeclaredMethod(methName, klsColl).invoke(new C(), args);
} catch (IllegalAccessException e) {
e.printStackTrace();
System.exit(-1);
} catch (InvocationTargetException e) {
e.printStackTrace();
System.exit(-1);
} catch (NoSuchMethodException e) {
e.printStackTrace();
System.exit(-1);
}
}
}
动态代理用于提供接口(interface)的实现,这些接口(interface)可以传递给需要这些接口(interface)的其他代码。
我是一名优秀的程序员,十分优秀!