zoukankan      html  css  js  c++  java
  • 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你就能得到你想要的类`~用法很多`~ 我只是简单的演示下

  • 相关阅读:
    hdu 1875 Krustal最小生成树
    寒假学习PID和latex随笔2013/2/10
    HDU:今年暑假不AC
    HDU:七夕节
    寒假规划
    HDU:开门人和关门人
    HDU:cake
    HDU:最小公倍数
    HDU:Who's in the Middle
    Latex 第一个程序 效果
  • 原文地址:https://www.cnblogs.com/zhangnanblog/p/2473820.html
Copyright © 2011-2022 走看看