java 动态创建对象

来源:互联网 发布:oecd下载数据 编辑:程序博客网 时间:2024/06/11 03:34

原博地址:http://www.cnblogs.com/zhangnanblog/archive/2012/04/27/2473820.html


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

    另外说句题外话,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你就能得到你想要的类`~用法很多`~ 我只是简单的演示下


0 0
原创粉丝点击