写一个Dog 类的代理,计算出方法用时,但是传入参数其中一个是这个类所实现的接口。
我写了一个接口,没写任何方法,Dog类有一个Shout()方法,我用代理调用Shout()方法,结果没有这个方法。
也就是接口中也必须定义Shout()方法,
但是如果我想写些某个类的代理,不知道它实现了那些接口或者它没实现接口,
或者接口中没有定义这个类所有的方法怎么办?
public class Experiment {
public static void main(String[] args){
Animal dog=(Animal)Proxy.newProxyInstance(
Animal.class.getClassLoader(),
new Class[]{Animal.class},
new InvocationHandler() {
long startTime=System.currentTimeMillis();
Dog dog=new Dog();
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
long startTime=System.currentTimeMillis();
Object obj=method.invoke(dog, args);
long endTime=System.currentTimeMillis();
long consumeTime=endTime-startTime;
System.out.println("方法用时"+consumeTime+"毫秒");
return obj;
}
});
dog.Shout();//错了。
}
}
class Dog implements Animal{
public void Shout(){
System.out.println("wang wang");
}
}
interface Animal{
}
|
|