`
Fhom
  • 浏览: 2669 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

java 动态代理的一点迷惑

    博客分类:
  • Java
阅读更多
package proxydemo;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Proxy;

import com.langsin.dynamicproxy.DynamicSubject;
import com.langsin.dynamicproxy.RealSubject;
import com.langsin.dynamicproxy.Subject;

public class Client1 {

    public static void main(String[] args) {

        DisplayServiceImpl obj = new DisplayServiceImpl();
        InvocationHandler target = new DynamicDisplayService(obj);

        Class cls = obj.getClass();//为什么只能转出来接口
        //DisplayServiceImpl ds = (DisplayServiceImpl) 向下转型不成功这样的时候会报异常???为什么
        DisplayService ds = (DisplayService) Proxy.newProxyInstance(cls.getClassLoader(), cls
                .getInterfaces(), target);
        System.out.println(ds.show("helloddddd"));
        //aa.show("hello");
    //    System.out.println(aa.getClass().get);
            
    }

}

在 得到一个动态代理的实例,既然是返回一个实现了这个接口的实例,那么在这里将他转向下转型成DisplayServiceImpl的时候为什么会报java.lang.ClassCastException:异常,百思不得其解,请求给予解释
分享到:
评论
2 楼 Fhom 2007-09-25  
realreal2000  真是一言惊醒梦中人啊 。。。。
谢啦
1 楼 realreal2000 2007-09-25  
郁闷,第一次提交失败,要重写.

LZ没有搞清楚继承和组合的关系?还是没有搞清楚什么是代理模式?

interface C{
...
}

class A implments C{
...
}

class ProxyA implments C{
private A a;
...
}


现在你获得了一个ProxyA的实例,你把它转换成A?结果自然是异常.

动态代理也是这个基础

相关推荐

    java动态代理新java动态代理新java动态代理新

    根据给定的信息,本文将重点解析Java动态代理技术,并适当关联Tomcat的配置与管理,因为给定部分内容涉及到了Tomcat的应用与管理。 ### Java动态代理技术解析 #### 一、Java动态代理简介 Java动态代理是Java反射...

    Java动态代理两种实现方式

    Java动态代理技术是Java编程中一个非常重要的特性,它允许我们在运行时动态创建具有特定行为的对象。这种技术常用于AOP(面向切面编程)和框架中,如Spring AOP,用于实现方法拦截、事务管理等功能。Java提供了两种...

    java动态代理机制

    Java动态代理机制是Java语言提供的一种强大的功能,它允许在运行时创建代理对象来实现特定接口,从而可以灵活地扩展或增强已有代码的功能。在Java中,动态代理主要通过两个类来实现:`java.lang.reflect.Proxy` 和 `...

    Java代理模式Java动态代理

    ### Java代理模式与Java动态代理详解 #### 一、代理模式概述 代理模式是一种软件设计模式,它在客户端和目标对象之间提供了一种间接层。这种模式的主要目的是控制客户端对目标对象的访问,并且可以在不修改原有...

    Java 动态代理详解(学习资料)

    JDK 动态代理JDK 提供了 java.lang.reflect.Proxy 类和 java.lang.reflect.InvocationHandler 接口来支持动态代理。Proxy 类用于创建一个代理对象,而 InvocationHandler 接口则定义了代理对象的方法调用处理逻辑。...

    Java 动态代理详解(代理模式+静态代理+JDK动态代理+CGLIB动态代理)

    Java 动态代理详解(代理模式+静态代理+JDK动态代理+CGLIB动态代理) Java 动态代理是 Java 编程语言中的一种强大工具,广泛应用于 Spring AOP、Hibernate 数据查询、测试框架的后端 mock、RPC 远程调用、Java 注解...

    java动态代理

    描述java动态代理,说明了怎么实现java的动态代理

    Java 动态代理和Cglib代理(二)

    在Java编程领域,动态代理和Cglib代理是两种常用的技术,用于在运行时创建对象的代理,以实现额外的功能,如AOP(面向切面编程)中的日志、事务管理等。本篇文章将深入探讨这两种代理机制,尤其是Cglib代理。 首先...

    java动态代理(重要).

    动态代理动态代理动态代理动态代理动态代理动态代理动态代理动态代理动态代理动态代理动态代理动态代理动态代理动态代理

    java动态代理.rar

    java动态代理项目源代码以及*.class文件反汇编工具,可以下载学习

    java事务 - 使用动态代理

    - Java动态代理基于Java反射API实现,主要涉及到`java.lang.reflect.Proxy`和`java.lang.reflect.InvocationHandler`两个类。 - `Proxy`类用于创建一个代理对象,而`InvocationHandler`接口定义了调用处理程序,它...

    java动态代理和cglib动态代理示例分享共5页.pdf

    Java动态代理和CGLIB动态代理是两种在Java开发中常用的面向切面编程(AOP)技术,主要用于在运行时创建具有额外功能的对象。这两者都允许我们在不修改原有代码的情况下,为对象添加额外的行为,如日志记录、事务管理...

    Java动态代理程序切片示例

    Java动态代理是Java编程中的一种高级技术,它允许在运行时创建代理类,这些代理类可以作为原有类的代理,从而在调用原有方法时添加额外的功能或行为。在这个示例中,我们专注于如何利用注解来实现对JavaBean的动态...

    Java动态代理机制分析

    Java 动态代理机制是Java反射机制的一部分,它允许开发者在运行时动态创建代理类和对象,以便在方法调用时插入自定义的行为。这种机制主要用于实现AOP(面向切面编程)和拦截器模式,提供了对方法调用的额外控制和...

    java装饰模式及动态代理模式示例源码

    装饰模式和动态代理模式是Java编程中两种非常重要的设计模式,它们都在代码的扩展性和灵活性方面发挥着关键作用。下面将分别对这两种模式进行详细解释,并结合手写的数据库连接池和动态代理模式的使用进行深入探讨。...

    java jdk 动态代理演示demo

    Java JDK 动态代理是一种强大的特性,它允许我们在运行时创建代理对象,这些代理对象能够拦截方法调用并在调用前后执行自定义的行为。在Java中,动态代理主要通过`java.lang.reflect.Proxy`类和`java.lang.reflect....

    java 动态代理的前世今生

    java 动态代理的前世今生 dynamic proxy in java

    示例代码:java动态代理和cglib代理的简单例子

    Java动态代理和CGLIB代理是两种常用的在Java中实现面向切面编程(AOP)的技术,它们允许我们在不修改原有代码的情况下,为方法添加额外的功能,如日志记录、性能监控、事务管理等。本篇文章将深入探讨这两种代理机制...

Global site tag (gtag.js) - Google Analytics