如何用Class_forName方法动态加载构造方法带参数的类

来源:互联网 发布:华胜天成与人工智能 编辑:程序博客网 时间:2024/06/05 06:36

关键在最后,LoadCat test = (LoadCat) constructor.newInstance("test", 1);这个LoadCat是个接口!!!害得我被忙活好多时间!constructor.newInstance("test", 1);这句返回实例化的对象!



如何用Class.forName方法动态加载构造方法带参数的类(转自http://blog.csdn.net/lianqiang198505/archive/2006/11/27/1417385.aspx)

   在用Class.forName方法动态加载构造方法带参数的类时,为了将参数传递进去,可以考虑java的反射机制,比如有一个类如下:


        public class Cat{

                    private int age;

                    private String name;

                    public void Cat(String name, int age){

                           this.name = name;

                           this.age = age;

                   }

        }

        如果想用Class.forName方法动态加载这个类,可以用以下类似的代码实现:

        import java.lang.reflect.Constructor;

        publc class LoadCat{


                    private int age;

                    private String name;

                    public void LoadCat(String name, int age){


                           super();

                           this.name = name;

                           this.age = age;


                   }

                   public static void main(String args[ ]){

                             Class clazz = Class.forName("Cat");

                             Constructor constructor = clazz.getConstructor(String.class, int.class);


                             LoadCat test = (LoadCat) constructor.newInstance("test", 1);

                   }

        }