Java反射机制和动态代理实例
生活随笔
收集整理的這篇文章主要介紹了
Java反射机制和动态代理实例
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
反射機制是Java語言的一個重要特性,允許用戶動態獲取類的信息和動態調用對象的方法。
通過給定類的名字,通過反射機制就可以獲取類的所有信息。
JAVA反射機制是在運行狀態中,對于任意一個類,都能夠知道這個類的所有屬性和方法;對于任意一個對象,都能夠調用它的任意一個方法;這種動態獲取的信息以及動態調用對象的方法的功能稱為java語言的反射機制。
Java反射機制主要提供了以下功能: 在運行時判斷任意一個對象所屬的類;在運行時構造任意一個類的對象;在運行時判斷任意一個類所具有的成員變量和方法;在運行時調用任意一個對象的方法;生成動態代理。
參考案例如下:
package com.reflect;public interface CalculatorProtocol {//定義個接口協議public int add(int a,int b);//兩個數相加public int subtract(int a,int b);//兩個數相減 } package com.reflect;public class Server implements CalculatorProtocol{public int add(int a,int b){return a+b;}public int subtract(int a,int b){return a-b;} }package com.reflect;import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method;public class CalculatorHandler implements InvocationHandler, net.sf.cglib.proxy.InvocationHandler{//實現調用處理器接口private Object objOriginal;public CalculatorHandler(Object obj){this.objOriginal=obj;}public Object invoke(Object proxy,Method method,Object[] args) throws Throwable{//此處添加預處理Object result=method.invoke(this.objOriginal, args);//此處添加后續處理return result;} }
package com.reflect;import java.lang.reflect.InvocationHandler;import net.sf.cglib.proxy.Proxy;public class DynamicProxyExample {public static void main(String[] args){CalculatorProtocol server = new Server();//創建serverInvocationHandler handler=new CalculatorHandler(server);CalculatorProtocol client=(CalculatorProtocol)Proxy.newProxyInstance(server.getClass().getClassLoader(),server.getClass().getInterfaces(), (net.sf.cglib.proxy.InvocationHandler) handler);//創建clientint r=client.add(5, 3);System.out.println("5+3="+r);r=client.subtract(5, 3);System.out.println("5-3="+r);} }
總結
以上是生活随笔為你收集整理的Java反射机制和动态代理实例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java实现算法导论中最近点对问题分治法
- 下一篇: Java实现算法导论中最长公共子序列(L