问题描述如下:
有3个类A和B和C,他们父类不同但都可以通过new来实例化,现在想通过另一个类F,用统一的途径来实例化他们,比如通过类似F.getinstance(“A”)就可以生成A的一个实例;F.getInstance(“C”)就可以产生C的实例。请问F的代码怎么写?
希望能得到大虾们的恢复!

解决方案 »

  1.   

    return Class.forName(str).newInstance();
      

  2.   

    class F{
         public statiic Object getInstance(String cn){
               Class c=Class.forName(cn);
               return c.newInstance();
         }
    }
      

  3.   

    上面的方法都很好
    但是这种情况你最好对三个类ABC都分别创建一个Factory类
    用于生成ABC的实例
      

  4.   

    建议可以试一下:class F{
         public statiic Object getInstance(String cn){
               Class c=Class.forName(cn);
               return c.newInstance();
         }
    }
      

  5.   

    可以结了
    大家说的都没错
    反正是 return Class.forName(str).newInstance();
      

  6.   

    对不起,大家说的好象都不能完成要求,public statiic Object getInstance(String cn)返回的是Object类型的,我要是A a=f.getInstance("A"),是不可能编译通过的!难道有办法把父类强制转化成子类吗?
    希望上面的朋友对自己的意见能够提出个完全符合题意的测试用例,谢谢大家!
      

  7.   

    Linyco(Linyco) 网址不错,可惜我没有找到我需要的资料,请再次指教!谢谢
      

  8.   

    AWUSOFT(程序设计,一个字:爽!) ,请你给我来个实例好吗?您说的太笼统了,谢谢!
      

  9.   

    楼主你说的方法目前是无法实现的,因为一个方法有一个返回值.
    F.getinstance(“A”),方法名和参数类型也都固定了,因此也不可能用通过重载来实现.
    Java反射技术?管你什么技术都没用,语法要求再那摆着呢.
    楼主别被什么名词忽悠了Class.forName(str).newInstance();这就是反射技术.
      

  10.   

    A a=(A)f.getInstance("A")你认为你用强制转换的时候是 是什么转成什么难道你经常把类转成Object?
      

  11.   

    赞同 bobskay
    楼主要求无法实现.
      

  12.   

    bobskay兄弟,我也是你那样想的,可是人家就是这样问我的,而且我写的上面答案,人家也不认同,是不是还有别的技术实现那?
    我今天在线求教
      

  13.   

    好象这个功能单靠java不能实现
      

  14.   

    A:一个java类怎么继承自多个类啊
    B:java不能多继承的,你用接口吧
    A:用接口多麻烦,方法还要重新写,我就想继承自多个类
    B:java不能多继承,语法就是这样要求的啊
    A:是不是还有别的技术实现那?
    B:你别用java了...
      

  15.   

    回复bobskay(): 我不用java不可能,毕竟学这么长时间了,只是这的确是一个面试题目,人家既然这样出,肯定有它的用意.上面大家说的我是都赞同,就是找不到答案,心里感觉很不爽.我也给他们公司询问解决办法,但是现在还没有回复,希望有路过的人能帮我解决!这个帖子要晚点结,希望楼上的所以同胞能了解我最近这两天找不到答案的郁闷感受,谢谢!
      

  16.   

    lxw790514() ,请给出个能实现的解决办法!
      

  17.   

    Davis129 的这个方法不行吗?A a = (A)f.getInstance("A");难道楼主的意思是左边的 A 也要是动态的?右边的 (A) 也要是动态。如果是这样的话,明确告知,目前版本的 JDK 不可能做到。
      

  18.   

    A a=(A)f.getInstance("A");当然不可以啊!
    f.getInstance("A")得到的类型是Object,能转换成A??