已经获得了类的名称,是string类型的,例如myclass   
  string   myclassname="myclass";   
  如何生成myclass的实例   
  myclass   mc=new   myclassname();     这样不可以啊
同样的  如果有了 String 类型的方法名称  如getName  如何调用呢  

解决方案 »

  1.   

    重复了
    有这种需求的时候才能体现java反射功能的强大
      

  2.   

    没错,要用到反射Class cls = Class.forName("your class name");
    ......
      

  3.   

    java 反射机制 可以轻松搞定哦
      

  4.   

    [code=Java][public Object getProperty(Object owner, String fieldName) throws Exception {
         Class ownerClass = owner.getClass();
     
         Field field = ownerClass.getField(fieldName);
     
         Object property = field.get(owner);
     
         return property;
     }
    /code]
      

  5.   

    Java 反射机制能实现,这个部分可是很经典的。
      

  6.   

    String s = "aaa";
    Class cls = Class.forName(s);
      

  7.   

    没看懂楼主的意思
    这和反射有啥关系。。
    myclassname 是变量名 怎么可以new .你说的string 是是你定义的变量吗String 第一个要大写 
      

  8.   

    晕,一堆人没明白楼主说了什么,虽然楼主说得可能不太清楚。楼主是想生成比如MyClass类的实例,不是说加载MyClass类。有两种方法(其实只有一种——叫做反射,这里是分情况)。第一种是调用MyClass的无参构造方法,获取Class对象,调用它的newInstance()方法。Class.forName("MyClass").newInstance();如果说要调用有参构造方法,这种就不适用了。第二种是获取构造方法对象,调用它的newInstance()方法,具体见文档。Class.forName("MyClass").getConstructor(参数类型列表).newInstance(参数值列表);至于知道方法名调用方法也简单,首先得有对象存在,假设是obj。Class clazz = obj.getClass();
    Method method = clazz.getMethod(方法名, 参数类型列表);
    method.invoke(obj, 参数值列表);另外,如果是私有构造方法或者私有方法,要调用getDeclaredConstructor()和getDeclaredMethod()才能获取到。