Java动态代理混淆

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

是否可以让一个接口(A)扩展另一个接口(B)并使用实现接口(B)的类的方法?这就是动态代理的意义吗

说我们有

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);
        }
    });