我instanceof
用来测试能力。
interface Animal{}
class AnimalImpl{}
class Cage{
public Animal animal;
}
如果我有一个cage
有动物的笼子,并且想为动物添加飞行和奔跑的代理
interface Fly{}
interface Run{}
我执行以下操作
01 ClassLoader cl = class.getClassLoader();
02 cage.animal = new AnimalImpl();
03
04 // Add fly
05 Class proxyFly = Proxy.getProxyClass(cl, Animal.class, Fly.class);
06 cage.animal = (Animal) proxyFly.getConstructor(new Class[]{InvocationHandler.class}).newInstance(ih);
07
08 // Add run
09 Class proxyFly = Proxy.getProxyClass(cl, Animal.class, Run.class);
10 cage.animal = (Animal) proxyFly.getConstructor(new Class[]{InvocationHandler.class}).newInstance(ih);
11 assert cage.animal implements Fly;
第 11 行失败。在第 09 行我需要添加Fly.class
但没有动态方法吗?