java面试知识点(四)- java 动态代理

java 反射

反射是一种机制,提供java 程序在RunTime获取类的元属性信息,创建对象,执行方法,修改权限等操作的能力,官方叫类的自省能力。(自己看看自己都有哪些部分、定义)

  • 示例1
public class ReflectService {
    public void sayHello(String name) {
        System.out.println("hell0 " + name);
    }

    public static void main(String[] args) throws ClassNotFoundException, IllegalAccessException, InstantiationException, NoSuchMethodException, InvocationTargetException {
        //获取对象
        Object reflectService = Class.forName(ReflectService.class.getName()).newInstance();
      // 获取方法
        Method sayHello = reflectService.getClass().getMethod("sayHello", String.class);
      //执行
        sayHello.invoke(reflectService,"reflect");

    }
}
  • 获取class的三种方式
  //1. 根据名字
  Class<?> aClass = Class.forName(ReflectService.class.getName());
   // 2. 直接调用class
 Class<ReflectService> reflectServiceClass = ReflectService.class;
  // 3. 通过对象
  ReflectService reflectService1 = new ReflectService();

反射的使用场景

  • 利用反射获取注解,根据注解来执行特殊业务操作,spring的BeanInit
  • 通过isInstance方法可以解决泛型参数,优化代码
    (实际中用的不多,效率方面肯定没有正常代码好)

java 动态代理使用方式

java 动态代理底层实现

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容