Java动态代理混淆
是否可以让一个接口(A)扩展另一个接口(B)并使用实现接口(B)的类的方法?这就是动态代理的意义吗 说我们有Java动态代理混淆,java,Java,是否可以让一个接口(A)扩展另一个接口(B)并使用实现接口(B)的类的方法?这就是动态代理的意义吗 说我们有 public interface A { String getMessage(); } public class AImpl implements A{ String msg = "Hello World"; @Override String getMessage(){ return this.msg; } } public
public interface A {
String getMessage();
}
public class AImpl implements A{
String msg = "Hello World";
@Override
String getMessage(){
return this.msg;
}
}
public interface B extends A {
}
public class main {
B b;
public main(B b){
this.b = new B();
}
System.out.println(b.getMessage()); // prints "Hello World"
}
动态代理是指创建一个对象,该对象“动态地”实现一些接口,即它接收一个
方法
对象,而不仅仅是实现这些接口
它通常用于1)确定运行时以某种方式使用哪些接口;或者2)具有非常大的接口,其中许多方法可以类似地实现
此代码与动态代理无关。您可以使用代理来执行您要求的操作(但您为什么要这样做?):
A=new AImpl();
this.b=(b)Proxy.newProxyInstance(
B.class.getClassLoader(),
新类[]{B.Class},
新调用处理程序{
@凌驾
对象调用(对象代理、方法、对象[]args)抛出Throwable{
invoke(a,args);
}
});
这是多态性和接口继承,与动态代理无关。
A a = new AImpl();
this.b = (B) Proxy.newProxyInstance(
B.class.getClassLoader(),
new Class<?>[] { B.class },
new InvocationHandler {
@Override
Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
return method.invoke(a, args);
}
});