java 动态创建对象

原博地址: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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值