谈谈反射机制,动态代理基于什么原理

谈谈反射机制,动态代理基于什么原理

Java 反射机制?

反射机制是Java语言提供的一种基础功能,赋予程序在运行时自省(introspect,官方用语)的能力。通过反射我们可以直接操作类或者对象,比如获取某个对象的类定义,获取类声明的属性和方法,调用方法或者构造对象,甚至可以运行时修改类定义。

  • https://docs.oracle.com/javase/tutorial/reflect/index.html

反射提供的 Accessibleobject.setAccessible(boolean flag)。它的子类也大都重写了这个方法,这里的所谓 accessible可以理解成修饰成员的 public、 protected、 private,这意味着我们可以在运行时修改成员访问限制。

setAccessible 的应用场景非常普遍,遍布我们的日常开发、测试、依赖注入等各种框架中。比如,在O/R Mapping框架中,我们为一个Java实体对象,运行时自动生成 setter 和 getter 的逻辑。

class Employee {
    private int id;
    private String name;
    private int age;
    public Employee() {
    }
    public Employee(int id, String name, int age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }

    private void setId(int id) {
        this.id = id;
    }

    private int judge(int id) {
        return this.id - id;
    }

    private String sayHalo(String name) {
        return "Hal

你可能感兴趣的:(实战,Java,并发编程)