`
hacker_zxf
  • 浏览: 148885 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

java.lang.reflect 动态代理

阅读更多
public interface IReport {

	String published();
}

 

public class Report implements IReport{

	public String published() {
           System.out.println("hello~~~");
           return "return Hello";
	} 

}

 

 

 

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

public class ReportProxy implements InvocationHandler{
    Object sub;
	
	public ReportProxy() {
		super();
	}
	
	public ReportProxy(Object obj) {
		super();
		this.sub = obj;
	}

	public Object invoke(Object proxy, Method method, Object[] args)
		   throws Throwable {
		   System.out.println("11111111111111");
		  Object obj =  method.invoke(sub, args);
		   System.out.println("22222222222222");
		
		return obj;
	}

}

 

 

 

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Proxy;

public class Client {
public static void main(String[] args) {
	//建立真正的实现实例
	IReport rep = new Report();
	//创建动态代理类
	ReportProxy dynamicProxy = new ReportProxy(rep);
	//获取CLASS
	Class ds = rep.getClass();
	//创建代理实例
	Object obj = Proxy.newProxyInstance(ds.getClassLoader(), ds.getInterfaces(), dynamicProxy);
	//强制转换
	IReport repProxy = (IReport)obj;
	//通过代理执行方法
	Object retObj = repProxy.published();
	//获取并打印方法执行结果
	System.out.println(retObj);

}
}

 

分享到:
评论

相关推荐

    Java.lang.reflect 包下常用的类及方法简介

    在Java编程语言中,`java.lang.reflect`包是核心库的一部分,它提供了运行时访问类、接口、字段和方法的能力。这个包对于理解和操作对象的动态特性至关重要,尤其是在实现反射机制时。反射允许我们在程序运行期间...

    JAVA反射实现和实现机制

    5. **`java.lang.reflect.Modifier`**:提供对成员的修饰符的访问。 ##### 基本使用方法 1. **获取成员方法信息**: - `Method[] getMethods()`:获取公开的方法。 - `Method getMethod(String name, Class<?>.....

    java反射(reflect)

    1. 动态代理:使用`java.lang.reflect.Proxy`和`java.lang.reflect.InvocationHandler`可以创建动态代理对象,实现AOP(面向切面编程)。 2. 数据库操作框架:如MyBatis,通过反射动态生成SQL语句并执行。 3. XML...

    java 请求的方法不存在(NoSuchMethodException)

    3. **Java动态代理**:基于`java.lang.reflect.Proxy`和`java.lang.reflect.InvocationHandler`,实现对目标对象的代理,用于拦截方法调用。 综上所述,`NoSuchMethodException`是Java编程中需要关注的一个重要异常...

    API规范JAVA.pdf

    * java.lang.instrument 是 Java 2 Platform 的一部分,提供了允许 Java 编程语言代理检测运行在 JVM 上的程序的服务。 17、虚拟机管理:java.lang.management 提供管理接口,用于监视和管理 Java 虚拟机以及 Java ...

    什么是java中的反射机制(reflect).docx

    Java 反射机制的实现是通过 java.lang.Class 类和 java.lang.reflect 包来实现的。Class 类代表了 Java 中的一个类,而 java.lang.reflect 包提供了许多反射类,例如 Constructor、Method、Field 等。 Constructor ...

    Java动态代理自建注解

    Java的`java.lang.reflect.Proxy`类和`java.lang.reflect.InvocationHandler`接口提供了实现动态代理的基础设施。`InvocationHandler`接口定义了一个`invoke`方法,它会在代理对象调用原对象的方法时被触发。我们...

    JAVA的反射机制与动态代理.pdf

    动态代理通常有两种实现方式:一是使用`java.lang.reflect.Proxy`类,二是使用`java.lang.invoke.MethodHandle`和`java.lang.invoke.MethodHandles`。 首先,我们来深入了解一下反射机制: 1. **Class对象**:在...

    java 反射与动态代理

    Java动态代理是一种在运行时动态创建代理类和代理对象的技术,主要由`java.lang.reflect.Proxy`类和`java.lang.reflect.InvocationHandler`接口组成。 1. **Proxy类**:`Proxy`类用于生成动态代理类和实例,这个类...

    java reflect and dynamic proxy .Java反射和动态代理

    Java反射和动态代理是Java语言中的两个重要特性,它们为程序提供了强大的运行时能力,能够增强软件的灵活性和可扩展性。这篇博文将深入探讨这两个主题,并通过实例解析其核心概念。 **Java反射(Reflection)** ...

    java之代理.pdf

    Java代理主要分为静态代理和动态代理。静态代理需要目标对象和代理对象都实现相同的接口,代理对象在编译时就已经确定,适用于简单场景。动态代理则更灵活,代理类和代理对象在运行时动态生成,不需要预先定义接口,...

    Java 动态代理.md

    JDK 动态代理主要依赖于 `java.lang.reflect.Proxy` 类和 `java.lang.reflect.InvocationHandler` 接口。使用 JDK 动态代理时,需要实现 `InvocationHandler` 接口,并通过 `Proxy.newProxyInstance()` 方法创建代理...

    java的类反射

    4. 动态代理:Java的`java.lang.reflect.Proxy`类可以创建动态代理,用于在方法调用前后添加自定义逻辑,比如AOP(面向切面编程)。 5. 框架开发:Spring框架的依赖注入、Hibernate的数据持久化等都大量使用反射技术...

    Java 反射-动态代理

    Java反射和动态代理是Java编程中的重要特性,它们在实现高度灵活...在提供的压缩包文件"JavaReflect"中,可能包含了关于Java反射和动态代理的示例代码和教程,通过学习和实践这些内容,你可以更深入地掌握这两种技术。

    【Java基础笔记】反射.docx

    - 生成动态代理:通过`java.lang.reflect.Proxy`类,可以创建动态代理,实现代理模式。 3. **相关包和类** - `java.lang.Class`:表示运行时的类信息,通过类名获取`Class`对象的方法有`forName()`、`getClass()`...

    Java语言的动态属性总结[参考].pdf

    7. **Java.lang.reflect.Proxy**: 支持动态代理,使得我们可以创建一个类的代理对象,该代理对象可以在调用方法时执行额外的操作。这在AOP(面向切面编程)中非常有用。 8. **Java.lang.reflect.InvocationHandler**:...

    java使用动态代理来实现AOP(日志记录)的实例代码共6

    Java中的动态代理主要通过`java.lang.reflect.Proxy`类和`java.lang.reflect.InvocationHandler`接口来实现。Proxy类用于创建一个实现了特定接口的代理对象,而InvocationHandler接口则定义了代理对象处理方法调用的...

    Java核心API

    Java.lang.reflect包提供了在运行时分析代码结构和行为的能力,是实现反射、动态代理等功能的基础。 #### Java.math Java.math包处理大整数和十进制数运算,对于高精度计算至关重要。 #### Java.net Java.net包...

    java jdk 动态代理 演示demo

    Java JDK提供了`java.lang.reflect.Proxy`类和`java.lang.reflect.InvocationHandler`接口,它们是实现动态代理的关键组件。`Proxy`类用于创建代理对象,而`InvocationHandler`接口定义了一个方法,用于处理代理对象...

Global site tag (gtag.js) - Google Analytics