java 动态创建对象

 

      做项目的时候遇到一个问题,就是需要动态加载类并实例化对象.现在分享给大家!

    另外说句题外话,Class.forName("").newInstance();用于工厂真的是挺好的,有用到的时候你可以试试!

    简单介绍下:Class.forName( )静态方法的目的是为了动态加载类。在加载完成后,一般还要调用Class下的newInstance( )静态方法来实例化对象以便操作。因此,单单使用Class.forName( )是动态加载类是没有用的,其最终目的是为了实例化对象。

  上代码的说:

  先是父类代码:

1 package com.test.entity;

2 

3 public class ItemBase {

4      public String toString(){

5         return "ItemBae";

6     }

7     

8 }

    子类代码:

package com.test.entity;



public class ItemA extends ItemBase{

     

    private String name;

    private String age;

    

     

     @Override

     public String toString(){

      return "A的name:"+name+",A的age:"+age;

     

    }



    public String getName() {

    return name;

      }



      public void setName(String name) {

    this.name = name;

     }



     public String getAge() {

    return age;

     }



     public void setAge(String age) {

    this.age = age;

     }

    

}

 

 

   

package com.test.entity;



public class ItemB extends ItemBase{

     

    private String name;

    private String age;

    

     

     @Override

     public String toString(){

      return "B的name:"+name+",B的age:"+age;

     

    }



    public String getName() {

    return name;

      }



      public void setName(String name) {

    this.name = name;

     }



     public String getAge() {

    return age;

     }



     public void setAge(String age) {

    this.age = age;

     }

    

}

  工厂代码:
 

package com.test.factory;



import com.entity.test.entity.ItemBase;



public class Factory {

    

    public static ItemBase createObj(String className) throws Exception{

            return (ItemBase)Class.forName(className).newInstance();

    }

    


 用法

public class Test {

    public static void main(String[] args) {

        

    ItemBase itemBase=(ItemBase)Factory.createObj("com.test.entity.ItemA");

               System.out.println("A:"+itemBase.toString());



                itemBase=(ItemBase)Factory.createObj("com.test.entity.ItemB");

               System.out.println("B"+itemBase.toString());

     }



}

 这里只是个示范,你可以去把你的类配置到xml去动态的读取,只需改XML你就能得到你想要的类`~用法很多`~ 我只是简单的演示下

你可能感兴趣的:(java)