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你就能得到你想要的類`~用法很多`~ 我只是簡單的演示下


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM