当前位置: 首页 > news >正文

凡科代理建站登录站长聚集地

凡科代理建站登录,站长聚集地,微信小程序怎么制作网页,东营专业网站建设需求 对象的相关信息存储在javabean.properties文件中,通过读取properties文件中的信息,实例化对象,要求程序不能硬编码,即程序可以通用,针对不同的对象,都可以实例化。仅需修改配置文件,不需要…

需求

对象的相关信息存储在javabean.properties文件中,通过读取properties文件中的信息,实例化对象,要求程序不能硬编码,即程序可以通用,针对不同的对象,都可以实例化。仅需修改配置文件,不需要更改代码。
在这里插入图片描述

实现代码

import java.io.FileReader;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.util.Properties;/*** 实例化对象*/
public class AddInstance {public static void main(String[] args) throws Exception {// 读取本地javabean.propertiesProperties properties = new Properties();properties.load(new FileReader("C:\\Users\\1\\IdeaProjects\\javaSE\\javabean.properties"));// 根据javabean.properties中的className值获取对应的字节码对象Class className = Class.forName((String) properties.get("className"));// 获取构造器Constructor constructor = className.getConstructor();// 获取实例化对象Object obj = constructor.newInstance();// 获取所有的变量对象Field[] fields = className.getDeclaredFields();// 遍历变量对象for (Field field : fields) {// 分割变量对象,需要注意”.“需要转义String[] split = (field.toString()).split("\\.");// 获取属性名String attribute = split[split.length - 1];// 将属性的访问设置为truefield.setAccessible(true);// 定义Object对象Object o;// 如果该对象的某个属性是int类型if (field.getType() == int.class) {// 将从javabean.properties中获取到的对应的该值转为Integer类型o = Integer.parseInt((String) properties.get(attribute));} else {// 不是int类型,直接将取出javabean.properties中的值o = properties.get(attribute);}// 写入field.set(obj, o);}System.out.println("通过配置文件创建了对象,并赋值结果是:" + obj);}
}

在这里插入图片描述在这里插入图片描述

需要注意以下两点:
(1)获取javaBean的属性对象后,用“.”(点)进行分割时,需要转义,即“\\.”,不然分割不出效果

	System.out.println("------------------------------------------------------------");System.out.println(field.toString());String[] split = (field.toString()).split("\\.");System.out.println(Arrays.toString(split));String[] split1 = (field.toString()).split(".");System.out.println(Arrays.toString(split1));

在这里插入图片描述

(2)因为从properties文件中读出来的值都是字符串的,所以在写入对象值时需要判断,即判断对象的该属性(比如)是int类型,则把从properties中读取出来的该属性的值转为int类型

	// 如果该对象的某个属性是int类型if (field.getType() == int.class) {// 将从properties.properties中获取到的对应的该值转为Integer类型o = Integer.parseInt((String) properties.get(attribute));} else {// 不是int类型,直接将取出properties.properties中的值o = properties.get(attribute);}

总结和分析

通过反射和读取本地配置文件的方式来实例化对象,看似避免了“硬编码”,实例化不同对象不需要更改代码。但是,仍有以下几点麻烦之处:
(1)实例化不同的对象,需要更改配置文件的className值,即需要实例化javaBean的全类名;
(2)另外,如果javaBean属性中有非字符串类型的,则需要增加判断
(3)而且如果多个javaBean的实例化信息存放在properties内,不免会出现属性重复的情况。比如Person类有name属性,User类也有name属性,这时就需要创建多个properties文件,不免有些麻烦。

http://www.dt0577.cn/news/56337.html

相关文章:

  • 娱乐公司网站建站背景介绍站长工具端口查询
  • 上海搬家公司电话查询seo排名官网
  • 北海市做网站的公司引流客户的最快方法是什么
  • 做网站购买备案域名网站的营销推广
  • 网站设计知识准备百度今日数据
  • 外贸公司怎么做上海谷歌seo推广公司
  • 适合翻译做兼职的网站如何做网页链接
  • 定机票最便宜网站建设友情连接出售
  • o2o网站建设报价网页制作与网站建设实战教程
  • 制作网页与网站百度帐号注册
  • 企业云服务seo自己怎么做
  • 那些网站做任务领q币杭州seo优化公司
  • 手机网站制作服务开封网站设计
  • 虎门外贸网站建设手机一键优化
  • 网站制作价windows优化大师怎么使用
  • 戴尔网站建设和维护石家庄网站建设公司
  • 天津建设交通委网站游戏代理0加盟费
  • 湘潭网站建设 技精磐石网络输入关键词自动生成标题
  • 网站302怎么做怎么免费注册域名
  • 建英语网站好seo软件排行榜前十名
  • 多页网站制作百度指数电脑端查询
  • 网站迁移到别的服务器要怎么做站长之家关键词挖掘工具
  • wordpress博客站模板抓关键词的方法10条
  • 做网站百度新闻源长沙关键词快速排名
  • 网站报价功能清单网站怎么开发
  • 微信个人商城网站模板免费下载长沙网站搭建优化
  • 企业网站建设的劣势媒体公关公司
  • 陕西电商b2c网站建设公司营销的方法和技巧
  • 电脑更新wordpressseo排名优化联系13火星软件
  • 广州做网站建设哪家专业北京官网优化公司