`
eheobo
  • 浏览: 3526 次
文章分类
社区版块
存档分类
最新评论

用Proxy 的静态方法 newProxyInstance 创建代理

阅读更多
示例代码:
		TestInterface s = (TestInterface)Proxy.newProxyInstance(TestProxy.class.getClassLoader(), new Class[]{TestInterface.class}, new InvocationHandler() {
			@Override
			public Object invoke(Object proxy, Method method, Object[] args)
					throws Throwable {
				if(method.getName().equals("toString")){
					return "This is a String proxy.";
				}
				return null;
			}
		});
		System.out.println(s);

注意:
  • Proxy 前的强制转换必须为接口,否则会出现
    引用
    java.lang.ClassCastException:  $Proxy0 cannot be cast to
    some Object。
  • TestInterface 为要代理的接口类型。
  • TestProxy 为实现了 TestInterface 的接口。
  • 方法的第二个参数 new Class[]{TestInterface.class},也经常看到写成 TestProxy.class.getInterfaces()。
分享到:
评论

相关推荐

    包含静态代理和动态代理demo代码

    4. 使用`Proxy.newProxyInstance()`方法创建代理对象,传入类加载器、接口数组和自定义的`InvocationHandler`实例。 5. 在客户端代码中,通过代理对象调用接口方法,实际会触发`InvocationHandler`的`invoke()`方法...

    静态代理和动态代理简单实现代码

    使用 `Proxy.newProxyInstance()` 可以生成一个动态代理实例。 总结来说,静态代理和动态代理都是为了在调用对象方法时添加额外的行为,但静态代理需要预先定义代理类,而动态代理可以在运行时动态创建代理对象。在...

    JAVA静态代理和动态代理

    在这个例子中,`Proxy.newProxyInstance()`方法会动态地生成一个实现了`Service`接口的代理对象,而`DynamicProxyHandler`实现了`InvocationHandler`接口,控制了对`RealService`方法的调用。 总结来说,Java的静态...

    静态代理和动态代理

    // 使用Proxy创建动态代理 Service dynamicProxy = (Service) Proxy.newProxyInstance( Service.class.getClassLoader(), new Class[]{Service.class}, new DynamicProxy(new RealService()) ); dynamicProxy....

    Java静态代理与动态代理demo

    在动态代理中,我们创建了一个 `DynamicProxy` 类实现 `InvocationHandler` 接口,然后使用 `Proxy.newProxyInstance()` 方法创建代理对象。`invoke()` 方法会拦截所有对代理对象的方法调用,从而可以在调用前后添加...

    Java设计模式——代理设计模式(静态代理和动态代理)

    4. **使用代理对象**:客户端代码与静态代理类似,通过代理对象调用方法。 动态代理的优势在于,当我们有多组接口需要代理时,只需要一个`InvocationHandler`就可以处理所有的代理逻辑,无需为每个接口创建单独的...

    用newProxyInstance方式和getProxyClass方式动态代理.zip

    这是Java的`java.lang.reflect.Proxy`类提供的一个静态方法,用于创建一个代理对象。这个方法需要三个参数: - `ClassLoader`:代理对象将使用的类加载器。 - `Interface[]`:代理对象需要实现的接口列表。这表明...

    Java静态代理和动态代理

    使用`java.lang.reflect.Proxy`类的`newProxyInstance()`方法创建代理类实例。这个方法需要传递类加载器、接口数组以及我们的`InvocationHandler`实例。 ```java Class[] interfaces = target.getClass()....

    proxy.rar java三种代理模式源码

    在"InterfaceProxy"目录中,你可以看到如何利用`Proxy.newProxyInstance()`方法创建接口的代理对象,并通过实现`InvocationHandler`接口的`invoke()`方法来控制代理对象的行为。这种方式比静态代理更灵活,因为不...

    Spring的静态代理和动态代理

    在这个动态代理示例中,我们没有创建具体的代理类,而是通过`Proxy.newProxyInstance()`方法创建了一个代理对象,并通过`InvocationHandler`来处理方法调用。 总结来说,Spring的静态代理和动态代理都用于实现AOP...

    静态代理和动态代理的例子

    在这个动态代理示例中,我们没有显式创建代理类,而是利用 `Proxy.newProxyInstance()` 方法创建了一个代理对象。这个代理对象在运行时根据传入的 `InvocationHandler` 实例来决定如何调用目标对象的方法。 总结来...

    静态代理和动态代理的讲解和案例,有详细的注释

    `Proxy.newProxyInstance()`方法用于创建代理对象。 总结来说,静态代理在编译时就需要明确代理类与目标类的关系,而动态代理则在运行时动态创建代理类,更灵活但需要实现`InvocationHandler`接口。两者都可以用于...

    java 静态代理和动态代理学习实例源码

    4. **创建代理对象**:使用Proxy类的newProxyInstance方法动态生成代理对象。 ```java public class Client { public static void main(String[] args) { Service realService = new RealService(); Service ...

    Java动态代理[动态类Proxy的使用]

    我们可以创建一个`LoggingInvocationHandler`实现`InvocationHandler`,并在`invoke()`方法中插入日志代码,然后使用`Proxy.newProxyInstance()`创建代理对象并替换原来的`ServiceImpl`。 5. **注意事项**: - ...

    jdk动态代理技术详解

    2. 然后,客户可以使用 Proxy 类的静态方法 newProxyInstance 创建代理对象。 3. 在创建代理对象时,Proxy 类会生成一个代理对象的名称,并将其存入当前 Proxy 对象内部的 cache 中。 4. 客户可以使用代理对象来调用...

    java静态代理、动态代理、装饰设计模式

    静态代理是最基础的形式,它需要程序员手动创建一个代理类,该类实现了与目标类相同的接口。代理类持有目标类的引用,并在调用目标类方法之前或之后添加额外的逻辑。这种方式的优点是代码清晰,易于理解;缺点是如果...

    java静态代理和动态代理详解

    在这个例子中,`Proxy.newProxyInstance()`用于创建动态代理对象,`ImageInvocationHandler`实现了`InvocationHandler`接口,处理了`display()`方法调用前后的逻辑。 总结来说,静态代理适用于需求较为固定,且对...

Global site tag (gtag.js) - Google Analytics