在我的C:\JAVA文件夹下面有8个类,分别是:(经过编译后生成的)
a.class   b.class  c.class  d.class  e.class  f.class  g.class  h.class
-------------------------------------------------------------------------
现在在main(String[] s)方法中,
我想从命令行接受一个变量值,(该变量值只能是a,b,c,d,e,f,g,h中的一个)
当值是哪一个就建立哪一个变量所对应的类的对象。
 
例如:
我从命令行接受的是d,
我就想生成d类的一个对象(类似执行d d1=new d())请问这时的java语句怎么实现?

解决方案 »

  1.   

    用 switch(args[0])
      {   
       case  “a”
           new a;
           break;
       case “b”
             
    }
      

  2.   

    Object o=Class.forName(args[0]).newInstance();
      

  3.   

    如果明确知道这种对应关系就没必要用反射机制:
    public static Object getObject(String arg){
       switch(arg){
       case "a": return new a();break;
        case "b": return new b();break;
       ....
        }
    }
    然后在main中:
     Object o=getObject(args[0]);
      

  4.   

    谢谢大家! 谢谢!!
    ---------------------------------------------------------------------------
    回复 newmeteor(圆缘) :
    如果在我的C:\JAVA文件夹下面要是有20个类,或者更多,
    而且该文件夹中的类是隔一段时间就要重新更新的,(即:又多了一些新的类)
    我每次执行的时候我都要先看一下里面的类名,然后再输入
    类似java app d这样的语句。所以你的留言中的
    new a;
    这么些好象是行不通,
    ---------------------------------------------------------------------------
    不过我还是非常感谢你,我会给你们大家加分的
    谢谢!
      

  5.   

    Object o=Class.forName(args[0]).newInstance();顶。。
      

  6.   

    根据命令行得到的参数去动态装入所需的类:
        Object o=Class.forName(args[0]).newInstance();
    ..
      

  7.   

    学习...
    用Object o=Class.forName(args[0]).newInstance();这种方法产生的类调用方法时也得加上switch
      

  8.   

    public static void main(String[] args) {
        String str=args[0];
        Object o=null;
        try{
          o = Class.forName(str).newInstance();
        }
        catch(Exception e){}
    }
    这样好使
      

  9.   


    根据命令行得到的参数去动态装入所需的类:
        Object o=Class.forName(args[0]).newInstance();
    ..
    这个比较专业
      

  10.   

    public static void main(String[] args)
    {
          String ch;
          try
          {
                 ch=System.in.read();
          }catch(Exception e)
          new ch;
    }
    刚学!!!有不对之处请指教,谢谢!!!