最近接触到java的反射和代理(接触的有点迟了。。。),还是有必要总结下
1. Java的反射
有的时候我们需要在程序运行的时候获取类、方法等信息用于动态运行,这个时候反射就能够帮我们找到类、方法、成员变量
关于反射的原理,java运行时会把类加载到。。。所以运行时可通过反射机制,取到这些信息。spring等框架使用的就是反射代理的机制。
2. Java代理
我理解的代理就是对一个已经存在的类或者方法进行二次封装,比如日志记录,或者做其他的操作,尝到甜头了,真的是非常好用啊!
package com.fxl.test; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; public class TestProxy{ public static void main(String[] args) throws Throwable { MyProxy pro = new TestProxy().new MyProxy(new TestProxy()); Class c = Class.forName("com.staryea.strategy.test.TestProxy"); Method method = c.getMethod("add", new Class[]{Integer.class,Integer.class}); Object o = pro.invoke(c, method, new Integer[]{2,3}); System.out.println(o); } public int add(Integer a, Integer b){ return a+b; } class MyProxy implements InvocationHandler{ private Object obj; public MyProxy(Object obj) { this.obj = obj; } @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { System.out.println("调用方法--->"+method.getName()); Object result = method.invoke(obj, args); System.out.println("result--->"+result); return result; } } }
JAVA----自定义注解
关于java的注解,最近好像明白了一些。咋说呢,注解这个小东西还是得和java的反射一起玩儿,不然不起作用,哈哈,注解这个弱受。但是注解这玩意儿还是蛮强大的。
注解可以是类的注解、方法的注解、属性的注解。我的理解就是类、方法、属性的属性,不知道我理解的对不对。
注解的使用(先列个提纲,明天再写,领导在旁边,哈哈):
1. 注解编写。。。
2. 调用。。。
3. 其他