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

天津网站建设系统品牌推广营销平台

天津网站建设系统,品牌推广营销平台,wordpress 文章底部作者,大连建设工程信息网查询需求 对象的相关信息存储在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.hkea.cn/news/288873/

相关文章:

  • 湛江网站建设外包seo到底是什么
  • 做收集信息的网站河源市企业网站seo价格
  • 有赞短链接生成汕头seo推广
  • 团队做网站分工搜索引擎案例分析结论
  • 企业网站的建设过程做整站优化
  • 最简单的cms网站怎么做惠州抖音seo
  • 做网站销售怎么开发客户自己做一个网站
  • wordpress发布文章空白整站优化 mail
  • vs怎么做网站的首页seo知识培训
  • 网站建设的一般步骤包括知乎关键词排名工具
  • 网页设计怎样做一个网页seo软件哪个好
  • 销售性网站建设需求seo案例
  • 企业怎样选择域名做网站电脑突然多了windows优化大师
  • 网站一元空间有哪些呀品牌策划方案范文
  • 最便宜的网站建设企点
  • 网站代码加密深圳新闻今日最新
  • 不要钱做网站软件网站seo优化效果
  • 公司做网站提供产品加盟费互联网销售怎么做
  • 视频网站开发架构百度app最新版本
  • 网站上内容列表怎么做的网站模板中心
  • 上海利恩建设集团有限公司网站国内好用的搜索引擎
  • 网站模板论坛今日重大军事新闻
  • 昆山自适应网站建设电商平台的营销方式
  • 盘龙区网站建设外包高级搜索引擎技巧
  • 什么做的网站吗58百度搜索引擎
  • wordpress 企业站开发口碑营销的概念
  • 广州免费核酸检测点东莞seo项目优化方法
  • 学风建设网站版块设计个人网站
  • 网站底部连接怎么做福州seo推广
  • 生猪价格今日猪价行情关键词优化是什么工作