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

  • 相关阅读:
    关于工作中Git相关的总结
    浅谈MySQL的优化
    由内搜推送思考Kafka 的原理
    SOA和微服务架构
    Centos7.2 搭建Lamp服务器以及迁移WordPress个人博客详细过程
    MyISAM和InnoDB索引实现区别
    图解高内聚与低耦合
    图解Java常用数据结构(一)
    Java源码安全审查
    Java高并发之锁优化
  • 原文地址:https://www.cnblogs.com/zhangnanblog/p/2473820.html
Copyright © 2011-2022 走看看