srg321 Asked:2020-02-15 03:03:08 +0000 UTC2020-02-15 03:03:08 +0000 UTC 2020-02-15 03:03:08 +0000 UTC 是否可以仅从接口创建代理类 772 大家下午好。例如,我只有一个接口,没有任何类的实现。有没有什么方法可以基于这个接口创建一个代理类,而不必创建实现这个接口的类的实例呢? java 1 个回答 Voted Best Answer Nikolai 2020-02-15T13:59:19Z2020-02-15T13:59:19Z 无需实例化实现该接口的类? 代理类将是实现接口的类。与常规类的实现不同的是,它的创建发生在运行时。 代理: 动态代理类(以下简称为代理类)是一个实现类创建时在运行时指定的接口列表的类,其行为如下所述。代理接口就是这样一个由代理类实现的接口。代理实例是代理类的实例。 所有代理接口方法的实现都定义在InvocationHandler. 例如,我有一个带有 2 种方法的接口: private interface Foo { void method1(); void method2(); void method3(); } 我想创建一个代理,它实现method1并且对所有其他代理不执行任何操作(或抛出该方法未实现的异常)。例如,可以这样做: public static void main(String... arg) { Foo foo = (Foo) Proxy.newProxyInstance(Foo.class.getClassLoader(), new Class[]{Foo.class}, (proxy, method, args) -> { switch (method.getName()) { case "method1": System.out.println("method1"); return null; default: break; } throw new RuntimeException(method.getName() + " is not implemented"); }); foo.method1(); foo.method2(); } 执行结果: 线程“main”java.lang.RuntimeException中的method1 异常:method2未实现...
代理类将是实现接口的类。与常规类的实现不同的是,它的创建发生在运行时。
代理:
所有代理接口方法的实现都定义在
InvocationHandler.例如,我有一个带有 2 种方法的接口:
我想创建一个代理,它实现
method1并且对所有其他代理不执行任何操作(或抛出该方法未实现的异常)。例如,可以这样做:执行结果: