希望十年后,我们都能活成我们喜欢的样子

导航

 

最近接触到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. 其他

 

posted on 2017-12-22 15:09  王凯的影迷朋友  阅读(207)  评论(0编辑  收藏  举报