import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.util.Arrays;
import java.util.Random;
public class ProxyTest {
public static void main(String[] args){
Object[] elements= new Object[1000];
for(int i=0;i<elements.length;i++){
Integer value=i+1;
Class[] interfaces=value.getClass().getInterfaces();
InvocationHandler handler = new TraceHandler(value);
Object proxy = Proxy.newProxyInstance(null, interfaces,handler);
elements[i]=proxy;
}
Integer key = new Random().nextInt(elements.length)+1;
System.out.println("start:"+key);
int result = Arrays.binarySearch(elements, key);
if(result>=0)System.out.println(elements[result]);
}
}
class TraceHandler implements InvocationHandler
{
public TraceHandler(Object t){
target= t;
}
public Object invoke(Object proxy, Method m, Object[] args)
throws Throwable {
System.out.print(target);
System.out.print("."+m.getName()+"(");
if(args!=null){
for(int i=0; i<args.length;i++){
System.out.print(args[i]);
if(i<args.length-1){
System.out.print(", ");
}
}
}
System.out.println(")");
return m.invoke(target,args);
}
private Object target;
}
分享到:
相关推荐
这个"spring动态代理类的示范小版本,很简单的例子"应该是提供了一个简单易懂的示例,帮助我们理解Spring动态代理的工作原理。 在Spring中,动态代理主要有两种实现方式:JDK动态代理和CGLIB代理。它们都是为了实现...
在这个"动态代理(AOP)简单例子"中,可能会展示如何使用JDK或CGLIB创建代理对象,以及如何使用匿名类实现InvocationHandler接口。同时,通过对比直接调用和动态调用,可以更直观地理解动态代理带来的优势。这个例子...
下面是一个简单的静态代理例子: ```java // 接口 public interface Service { void doSomething(); } // 被代理类 public class RealService implements Service { @Override public void doSomething() { ...
本篇文章将深入探讨这两种代理机制,并通过一个简单的例子来展示它们的用法。 一、Java动态代理 Java动态代理基于Java的反射API,它在运行时创建一个实现了特定接口的代理类。这个代理类会拦截调用并执行额外的...
现在,我们来看如何创建一个简单的Spring AOP例子: 1. **定义切面(Aspect)**:切面是包含通知(Advice)和切入点(Pointcut)的类。通知定义了要执行的逻辑,切入点定义了何时执行。例如,我们可以创建一个名为`...
下面将详细解释这三个概念,并通过一个简单的例子来展示它们的用法。 首先,我们来理解“接口”。接口在Java、C#等面向对象语言中是一种规范,它定义了一组方法签名,但不包含实现。类可以实现多个接口,从而遵守...
通过学习这个简单的Remoting例子,开发者不仅可以了解.NET Remoting的基本用法,还能理解分布式系统中的主要概念,如对象激活、通道、代理等,这对于构建复杂的分布式应用程序至关重要。不过,需要注意的是,随着...
JAVA动态代理的例子 一个简单的例子 初学者可以下载试试
接下来,我们通过一个经典例子来阐述事件和代理的使用。假设我们正在开发一个简单的文本编辑器,其中有一个“保存”按钮。当用户点击“保存”按钮时,我们需要执行保存文件的操作,并在完成后通知用户文件已成功保存...
下面是一个简单的CGlib动态代理的例子: ```java import net.sf.cglib.proxy.Enhancer; import net.sf.cglib.proxy.MethodInterceptor; import net.sf.cglib.proxy.MethodProxy; import java.lang.reflect.Method;...
运行这段代码,你会看到 "Before method call..."、"Doing something..." 和 "After method call..." 这样的输出,这就是动态代理在方法调用前后添加了额外操作的一个简单示例。 总结来说,Java动态代理是一种强大...
文件“005_Factory_Series_DesignPattern”可能包含一系列关于工厂方法模式的示例,可能包括简单工厂、工厂方法、抽象工厂等变体。这些例子可以帮助开发者理解如何在不同的场景下选择和使用工厂方法模式。 接下来,...
下面以一个简单的Java代码示例来说明代理模式的应用: ```java // 目标对象接口 public interface Image { void display(); } // 具体的目标对象 public class RealImage implements Image { private String ...
在这种情况下,Squid配置可能相对简单,而大部分负载均衡逻辑会在前端的工具中实现。 这些配置示例展示了Squid在反向代理和负载均衡方面的灵活性。正确配置Squid可以帮助提高网站性能,减少带宽消耗,并为用户提供...
本文将深入探讨PHP反射的工作原理,并通过一个简单的例子来说明其用法。 1. PHP反射基础 反射API是PHP内建的一组类,它提供了对类、接口、函数、方法和常量等对象的元数据访问。这些类包括`\ReflectionClass`、`\...
这个简单例子将帮助我们理解AOP的基本概念和如何在Spring框架中实现它。 首先,我们要知道AOP的核心概念:切面、通知、连接点、切点、目标对象和代理。切面是包含横切关注点(如日志记录、事务管理等)的模块化组件...
- `最简单调用.txt`可能包含一个简单的调用代理的示例代码,可能是JavaScript或者SSJS,用于触发服务器端代理的执行。 - 其他`.doc`和`.docx`文件可能提供了更复杂的例子,例如如何传递参数、处理返回结果,或者在...
本教程将通过一个简单的Aidl例子,帮助安卓学习新手理解其工作原理和应用。 标题中的“简单的aidl例子”指的是一个基础的AIDL示例项目,它演示了如何创建、实现以及使用AIDL接口。AIDL的基本结构包括定义接口、生成...
在探讨“简单的反射例子”这一主题时,我们深入解析了反射在C#中的应用,以及如何利用反射来访问和操作对象的属性。反射是.NET框架中的一个强大特性,它允许程序在运行时检查和调用类型的信息,包括类型、方法、属性...
以下是一个简单的静态代理模式示例: ```java // 目标接口 interface Target { void doSomething(); } // 目标实现类 class RealTarget implements Target { @Override public void doSomething() { System....