如题,现在有Class.forName("某某类名").newInstance();只容许不带任何参数的构造函数类.现在我知道要实例化的类名了,也知道参数的值了,怎么构造这个类呢?他只有一个带参数的构造函数阿.

解决方案 »

  1.   

    package com.didoleo.test;public class MyClass { public MyClass(){

    }

    public MyClass(int x,int y){

    }

    public MyClass(double x,double y){

    }

    public MyClass(String x,String y){
    System.out.println(x+" "+y);
    }

    }/////////////////////
    package com.lihongtu.test;
    import java.lang.reflect.*;
    public class TestCon {

    public static void main(String[] args) { try {
    Constructor[] cons = MyClass.class.getConstructors();
    if (cons != null && cons.length > 0) {
    MyClass obj = (MyClass) cons[2].newInstance(new Object[] {
    new String("hello"), new String("didoleo")});
    } } catch (Exception e) {
    e.printStackTrace();
    } }

    }
    //要注意以下的是:MyClass 中有4个构造函数,其中public MyClass(String x,String y)
    算是第3个构造函数,因此cons[2] 下标用的是 "2" ,这个我是凑出来的.
      

  2.   

    哦,谢谢,我也看到Constructor类了,不过没深研究。楼上的方法很好,谢谢了。在说一次谢谢了!呵呵,spring我也在看,不过好像都是CGLIB生成的吧,哪个包没怎么看,不知道怎么生成的。