Class.forName得到Class对象后,可以用newInstance方法获得实例。
可是,如果要获得实例的类,没有不带参数的构造方法,怎么办呢?
还能用Class.forName和newInstance的方法来获取实例吗?

解决方案 »

  1.   

    不可以的。必须要有无参构造函数。
    不过可以用Constructor类的newInstance方法来传参数。
      

  2.   

    Class c = Class.forName("packageName.ClassName").newInstance(); //它返回的不是你这个类的对象(实力),而是一个Class类型的对象,跟new packageName.ClassName();得来的实力是两码事,要想了解 Class类,查看API
      

  3.   


     谢谢您的回复。可是,据我所知 forName这个方法返回的才是Class对象,而newInstance返回的是Object类的对象…… 
      

  4.   

    那就用Constructor来实例化对象Class o=Class.forName("aImpl");
    Constructor cous = o.getConstructor(new Class[]{String.class});
    C ao=(C)cous.newInstance(new Object[]{"xxx"});