“嗨,阿米戈。”“你好,瑞希。”“今天我将向您解释一个非常有趣的新话题:动态代理”。“Java 有几种方法可以改变特定类的功能……”“第一个方法,传承。”“更改类行为的最简单方法是创建一个继承原始(基)类的新类,并覆盖其方法。然后,使用派生类而不是原始类。例如:”Reader reader = new UserCustomReader();“第二种方法是使用包装类。”"BufferedReader是这类类的一个例子。首先,它继承了Reader。换句话说,它可以代替 Reader 使用。其次,它将所有调用重定向到原始Reader对象,必须传递给 BufferedReader 对象的构造函数。 例如:”Reader readerOriginal = new UserCustomReader(); Reader reader = new BufferedReader(readerOriginal);“第三种方法是创建一个动态代理(Proxy)。”“Java 中有一个特殊的类 (java.lang.reflect.Proxy),它实际上允许您在程序执行期间(动态地)构造一个对象,而无需为其创建单独的类。”“这很容易做到:”Reader reader =(Reader)Proxy.newProxyInstance();“这对我来说已经是新鲜事了!”“但是当然,我们不需要没有方法的对象。我们需要对象有方法,我们需要它们来做我们想做的事情。Java为此使用了一个特殊的接口,称为 Invocati
动态代理·学习笔记
“嗨,阿米戈。”“你好,瑞希。”“今天我将向您解释一个非常有趣的新话题:动态代理”。“Java 有几种方法可以改变特定类的功能……”“第一个方法,传承。”“更改类行为的最简单方法是创建一个继承原始(基)类的新类,并覆盖其方法。然后,使用派生类而不是原始类。例如:”Reader reader = new UserCustomReader();“第二种方法是使用包装类。”"BufferedReader是这类类的一个例子。首先,它继承了Reader。换句话说,它可以代替 Reader 使用。其次,它将所有调用重定向到原始Reader对象,必须传递给 BufferedReader 对象的构造函数。 例如:”Reader readerOriginal = new UserCustomReader(); Reader reader = new BufferedReader(readerOriginal);“第三种方法是创建一个动态代理(Proxy)。”“Java 中有一个特殊的类 (java.lang.reflect.Proxy),它实际上允许您在程序执行期间(动态地)构造一个对象,而无需为其创建单独的类。”“这很容易做到:”Reader reader =(Reader)Proxy.newProxyInstance();“这对我来说已经是新鲜事了!”“但是当然,我们不需要没有方法的对象。我们需要对象有方法,我们需要它们来做我们想做的事情。Java为此使用了一个特殊的接口,称为 Invocati