美文网首页
Java 注解、反射、代理 整理记录

Java 注解、反射、代理 整理记录

作者: livesxu | 来源:发表于2020-09-13 23:35 被阅读0次

1.注解:标签

2.反射:动态获取或者执行

3.代理:委托

1.动态代理

public class TestC implements TestP {
    @Override
    public String methodOne(String name) {
        return name + "method one";
    }

    @Override
    public void methodTwo() {

        System.out.println("method two");
    }
}
public class TestProxy {

    public static TestP createProxy(TestC testC) {

        TestP testP = (TestP)Proxy.newProxyInstance(testC.getClass().getClassLoader(), testC.getClass().getInterfaces(), new InvocationHandler() {
            @Override
            public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {

                System.out.println("proxy ..");

                return method.invoke(testC,args);
            }
        });

        return testP;
    }
}
public class Test2 {

    @Test
    void test() {

        TestC testC = new TestC();

        TestP testP = TestProxy.createProxy(testC);

        String c = testP.methodOne("boy");

        testP.methodTwo();

        System.out.println(c);
    }

}

2.cglib增强字节码:运行时创建目标类的子类,从而对目标类进行增强

public class TestEnhancer {

    public static TestC createEnhancer(TestC testC) {

        //创建增强对象
        Enhancer enhancer = new Enhancer();
        //设置父类
        enhancer.setSuperclass(TestC.class);
        //设置回调【拦截】
        enhancer.setCallback(new MethodInterceptor() {
            @Override
            public Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable {

                System.out.println("enhancer ..");

                //执行方法
//                Object object = method.invoke(testC,objects);
                //执行代理类的方法(目标类和代理类式父子关系)
                Object object = methodProxy.invokeSuper(o,objects);
                return object;
            }
        });
        TestC testC1 = (TestC)enhancer.create();

        return testC1;
    }
}

相关文章

  • Java基础:反射

    反射注解动态代理相关阅读 Java基础:类加载器 Java基础:反射 Java基础:注解 Java基础:动态代理 ...

  • Java 注解、反射、代理 整理记录

    1.注解:标签 2.反射:动态获取或者执行 3.代理:委托 1.动态代理 2.cglib增强字节码:运行时创建目标...

  • Java基础:注解

    系列阅读 Java基础:类加载器 Java基础:反射 Java基础:注解 Java基础:动态代理 1. 概述 注解...

  • 2021校招 复习总结

    笔记导航: JAVA: 泛型 反射和动态代理 注解 JAVA多线程 ReentrantLock,Volatile,...

  • 博客地址

    java注解-01、java注解-02、Git面试资源java反射-01、java反射-02、java反射-03为...

  • java 反射 注解 代理

    注解的使用通常配合反射使用动态代理需要反射机制配合简单说下注解:注解是元数据:数据的数据,可以给方法 类 变量增加...

  • Java基础:动态代理

    系列阅读 Java基础:类加载器 Java基础:反射 Java基础:注解 Java基础:动态代理 概述 在运行时,...

  • 注解反射以及动态代理

    注解与反射以及动态代理 注解 注解的定义 Annotation(注解)就是Java提供了一种元程序中的元素关联任何...

  • Android-自定义注解-Java动态代理(Proxy)-动态

    我们一路从java注解基础,元注解、自定义注解、反射、代理【动态代理】模式一路到现在,基本上可以针对Android...

  • Java基础:类加载器

    系列阅读 Java基础:类加载器 Java基础:反射 Java基础:注解 Java基础:动态代理 1. 什么是类加...

网友评论

      本文标题:Java 注解、反射、代理 整理记录

      本文链接:https://www.haomeiwen.com/subject/hzshektx.html