返回顶部
首页 > 资讯 > 后端开发 > Python >Java通过工厂、Map容器创建对象的方法
  • 533
分享到

Java通过工厂、Map容器创建对象的方法

2024-04-02 19:04:59 533人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

一、通过工厂+反射+配置文件创建对象 通过工厂+反射+配置文件获取对象 public class AbsFactory { //声明一个变量(多例模式,每次通过工厂都会创

一、通过工厂+反射+配置文件创建对象

通过工厂+反射+配置文件获取对象



public class AbsFactory {
 
 //声明一个变量(多例模式,每次通过工厂都会创建一个不同的实例)
 private static Object obj;
 
 public static Object createType(String createName){
  //自动释放资源--使用绝对路径
  try( InputStream is =new FileInputStream("src\\Factory.properties")) {
   //配置文件类
   Properties pro=new Properties();
   pro.load(is);
   // System.out.println(pro.size());
   //获取参数
   String property = pro.getProperty(createName);
   obj = Class.forName(property).newInstance();
   
  } catch (InstantiationException e) {
   e.printStackTrace();
  } catch (IllegalAccessException e) {
   e.printStackTrace();
  } catch (ClassNotFoundException e) {
   e.printStackTrace();
  } catch (FileNotFoundException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }finally {
   return obj;
  }
 }
 
}

配置文件如下


//以Key,Value的形式,主要Value要写全类名,不要加分号
accountService=com.dynamic.service.Impl.AccountServiceImpl
accountDao=com.dynamic.dao.Impl.AccountDaoImpl

二、通过Map容器间接获取对象

通过Map容器间接获取对象,与spring中的ioc容器类似,采用立即加载策略



public class BeanFactory {
 //定义一个properties对象
 private static Properties props;
 //定义一个Map,用于存放我们创建的对象(单例,当类加载之后就有了对象,之后从Map中获取)
 private static Map<String,Object> beans;
 
 //容器
 static {
  try {
   props=new Properties();
   //将bean.properties放在了resources路径下
   InputStream is=BeanFactory.class.getClassLoader().getResourceAsStream("bean.properties");
   props.load(is);
   //实例化容器
   beans=new HashMap<String,Object>();
   //从配置文件中获取所有key值
   Enumeration<Object> keys = props.keys();
   while (keys.hasMoreElements()){
    //取出每一个key
    String key = keys.nextElement().toString();
    //根据key获取value
    String path = props.getProperty(key);
    Object value=Class.forName(path).newInstance();
    //放入容器中
    beans.put(key,value);
   }
  }catch (Exception e){
   e.printStackTrace();
  }
 
 }
 
 //提供一个访问Map容器的入口
 public static Object getInstance(String name){
  return beans.get(name);
 }
 
}

配置文件内容如下


accountService=com.dynamic.service.Impl.AccountServiceImpl
accountDao=com.dynamic.dao.Impl.AccountDaoImpl

以上两部分归到根上都是通过反射创建对象,jdk8在反射创建对象时,做了很大的增强,提高了性能。其实Spring IOC与以上实现创建对象的原理是一致的,Spring IOC做的就是这件事情,只是它封装的更好而已(当然还有其他的增强,O(∩_∩)O哈哈~)。

到此这篇关于Java通过工厂、Map容器创建对象的方法的文章就介绍到这了,更多相关java创建对象内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Java通过工厂、Map容器创建对象的方法

本文链接: https://lsjlt.com/news/122583.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Java通过工厂、Map容器创建对象的方法
    一、通过工厂+反射+配置文件创建对象 通过工厂+反射+配置文件获取对象 public class AbsFactory { //声明一个变量(多例模式,每次通过工厂都会创...
    99+
    2024-04-02
  • java工厂模式创建对象的方法是什么
    Java工厂模式创建对象的方法是通过工厂类来创建对象。工厂类根据客户端的需求,创建一种或多种不同类型的对象。这种方法将对象的实例化过...
    99+
    2023-10-20
    java
  • C++工厂方法之对象创建型模式详解
    目录1.代码示例2.工厂方法模式的定义(实现意图)总结1.代码示例 工厂方法模式,简称工厂模式或者多态工厂模式。与简单工厂模式相比,引入了更多的新类,灵活性更强,实现也更加复杂。符合...
    99+
    2024-04-02
  • Java对象的创建过程
    Java对象创建过程JVM遇到一条新建对象的指令时首先去检查这个指令的参数是否能在常量池中定义到一个类的符号引用。然后加载这个类;推荐学习:java视频教程为对象分配内存。一种办法“指针碰撞”、一种办法“空闲列表”,最终常用的办法“本地线程...
    99+
    2019-04-12
    java入门 Java 对象
  • java对象创建的过程
    1、检查指令的参数是否能在常量池中定位到一个类的符号引用 2、检查此符号引用代表的类是否已被加载、解析和初始化过。如果没有,就先执行相应的类加载过程 3、类加载检查通过后,接下来虚拟机将为新生对象分配内存。 4、内存分配完成之后,虚拟机将分...
    99+
    2023-08-30
    java jvm 开发语言
  • JAVA对象创建与对象克隆的方法
    这篇文章主要介绍了JAVA对象创建与对象克隆的方法的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇JAVA对象创建与对象克隆的方法文章都会有所收获,下面我们一起来看看吧。一、对象的4种创建方式new 创建反射克隆...
    99+
    2023-06-29
  • Java spring 通过注解方式创建对象的示例详解
    java spring 通过注解方式创建对象 首先 我们要搞清楚一个基础概念什么是注解? 注解可以说是代码里的一些特殊标记。格式是 @() 里面可以有 属性=属性的值 可以有多个属性...
    99+
    2023-02-08
    spring注解创建对象 java spring注解方式创建对象 java spring注解 Spring注解开发
  • Java和C++通过new创建的对象有何区别?
    前言本文我们不去谈int、float、char等基本数据类型,而是用一般的类来说明。因为Java中可以直接通过 int varName 的方式来定义和使用一个基本类型的变量,但对于其它一般类型的对象,必须使用 new 来创建。因此,为了更一...
    99+
    2023-05-30
    java c++ new对象
  • Java创建对象的方法有哪些
    本篇内容介绍了“Java创建对象的方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1 简介Java...
    99+
    2024-04-02
  • java创建对象方法有哪些
    java中创建对象方法有:1.使用new关键字创建;2.使用Class类创建;3.使用构造函数创建;4.使用反序列化创建;java中创建对象方法有以下几种使用new关键字创建public class Test {public static ...
    99+
    2024-04-02
  • JavaScript创建对象的方法
    这篇文章主要讲解了“JavaScript创建对象的方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript创建对象的方法”吧! 通过 Jav...
    99+
    2024-04-02
  • java中创建对象的方法有几种
    一、使用new关键字这是我们最常见的也是最简单的创建对象的方式,通过这种方式我们还可以调用任意的构造函数(无参的和有参的)。例如:User user = new User();二、使用反射机制运用反射手段,调用Java.lang.Class...
    99+
    2021-01-18
    java 创建 对象 方法
  • 通过Java代码来创建view的方法
    一、简介需要了解的知识二、方法1)java代码创建view方法* 1、先建view对象View view= View.inflate(this, R.layout.activity01, null);* 2、在view中填充R.layout...
    99+
    2023-05-31
    java 创建 view
  • java中抽象工厂模式与工厂方法模式的区别
    一、简单工厂模式特点:它是一个具体的类,非接口 抽象类。有一个重要的create()方法,利用if或者 switch创建产品并返回。create()方法通常是静态的,所以也称之为静态工厂。缺点:扩展性差(我想增加一种面条,除了新增一个面条产...
    99+
    2015-05-09
    java入门 java 抽象工厂模式 工厂方法模式 区别
  • java创建多个对象的方法是什么
    在Java中,可以通过以下方法创建多个对象: 使用构造函数:可以通过调用类的构造函数来创建对象。构造函数是一个特殊的方法,用于初...
    99+
    2023-10-24
    java
  • java随机创建对象的方法是什么
    Java随机创建对象的方法有多种,以下是其中几种常用的方法:1. 使用反射:利用Class类的newInstance()方法可以实例...
    99+
    2023-10-18
    java
  • Java中创建String 对象的方法有哪些
    这篇文章将为大家详细讲解有关Java中创建String 对象的方法有哪些,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。创建 String 对象有三种方法String s1="我是字...
    99+
    2023-05-31
    java string ava
  • java开发的工厂方法模式及抽象工厂验证示例
    目录工厂方法模式示例抽象工厂模式验证结论工厂方法模式示例 开发一个数据格式转换工具,将不同数据源如:txt、excel等格式文件,转换为XML格式输出,需考虑今后其他格式的文件也需要...
    99+
    2024-04-02
  • Java中对象的创建的过程有哪些
    这篇文章将为大家详细讲解有关Java中对象的创建的过程有哪些,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、对象的内存布局对象头对象头主要保存对象自身的运行时数据和用于指定该对象属于哪个类...
    99+
    2023-06-15
  • Java中怎么通过创建对象来提升程序性能
    本篇文章给大家分享的是有关Java中怎么通过创建对象来提升程序性能,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。在 Java 中有多种方式可以创建对象,总结起来主要有下面的 4...
    99+
    2023-06-16
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作