如果有一个类型AClass的对象a,
为了传参方便,想把它变成Object类型传递,
最后使用的时候变回A类型(但是使用者不知道原始类型)。Object o = new AClass();中间传递多次。最后,把o传入一个需要AClass的函数f(AClass a)
不可以用  f((AClass)o)  这样转换,因为用户不知道o的原始类型。我想问java有办法实现吗?

解决方案 »

  1.   

    强制转换啊   AClass aclass =(AClass)o
      

  2.   

    最后一次传参之前  先返回AClass
      

  3.   

    instanceof 判断,然后根据类型分别处理之。
      

  4.   

    最后一次传参之前 先返回AClass
      

  5.   

    这也不行,如果我有好几个类型,你的意思是写成这样:
    instanceof判断
    {
      AClass a = (AClass)o;
    }
    instanceof判断
    {
      BClass b = (BClass)o;
    }
    运行时一定报错
      

  6.   


    楼主,你不觉得你自己逻辑有问题吗?传的是Object,不知道什么类型,又不允许强转。那你想干什么???
    你是不是以为java是javascript?呵呵,也许反射可以解决你的问题,但如果是业务软件不建议这么做。
    我觉得你的问题主要还是设计问题。
    你应该抽象出所有共同的业务方法设计一个接口或者基类ComClass,让所有业务类去实现这个接口或继承这个基类。
    传参的时候去传递ComClass,然后即可用ComClass形参调用你的业务方法。
      

  7.   

    不要传递Object,直接传递Class,然后利用反射调用你需要这个对象的东西,就是把targetObject.class 作为参数传递
      

  8.   


    反射应该解决不了。因为反射出来的虽然是AClass的对象,但是都是Object类型。如果反射能够根据类名直接产生这个类型的对象才行。
      

  9.   


    不传Object怎么获得数据?用Class只能获得一个新对象。
      

  10.   

    if (o instanceof(AClass))
    {
      f(o);
    }
     
      

  11.   

    为什么要转换成Object类型呢?