电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Java BeanUtils.copyProperties的詳解

瀏覽:4日期:2023-02-12 16:12:12
場景

開發中經常遇到,把父類的屬性拷貝到子類中。通常有2種方法:1、一個一個set2、用BeanUtils.copyProperties很顯然BeanUtils更加方便,也美觀很多。那么任何情況都能使用BeanUtils么,當然不是。要先了解他。

BeanUtils是深拷貝,還是淺拷貝?

是淺拷貝。淺拷貝: 只是調用子對象的set方法,并沒有將所有屬性拷貝。(也就是說,引用的一個內存地址)深拷貝: 將子對象的屬性也拷貝過去。

什么情況適合用BeanUtils

如果都是單一的屬性,那么不涉及到深拷貝的問題,適合用BeanUtils。

有子對象就一定不能用BeanUtils么

并不絕對,這個要區分考慮:1、子對象還要改動。2、子對象不怎么改動。雖然有子對象,但是子對象并不怎么改動,那么用BeanUtils也是沒問題的。

代碼例子

下面用代碼說明下。翠山有個兒子無忌,兒子繼承了他的face和height。但是life應該是自己的。后來翠山自刎而死,無忌也變成dead狀態了。這就是淺拷貝,無忌用的life引用的翠山的life對象。

Father類:

@Datapublic class Father { private String face; // 長相 private String height; // 身高 private Life life; // 生命}

Life 類:

@Datapublic class Life { private String status;}

Son類和main方法:

@Datapublic class Son extends Father{ private Life life; public static void main(String[] args) {Father cuishan = new Father();cuishan.setFace('handsome');cuishan.setHeight('180');Life cuishanLife = new Life();cuishanLife.setStatus('alive');cuishan.setLife(cuishanLife);Son wuji=new Son();BeanUtils.copyProperties(cuishan,wuji);//Life wujiLife = wuji.getLife();//wujiLife.setStatus('alive');//wuji.setLife(wujiLife);//cuishanLife.setStatus('dead'); // 翠山后來自刎了System.out.println(JSON.toJSONString(cuishan));System.out.println(JSON.toJSONString(wuji)); }}

上面注釋出的代碼可以如下替換:case1和case2還是受淺拷貝的影響,case3不受。case1: 翠山自刎,無忌也掛了

//Life wujiLife = wuji.getLife();//wujiLife.setStatus('alive');//wuji.setLife(wujiLife);//cuishanLife.setStatus('dead'); // 翠山后來自刎了

case2: 翠山自刎,無忌設置或者,翠山也活了

//cuishanLife.setStatus('dead'); // 翠山后來自刎了//Life wujiLife = wuji.getLife();//wujiLife.setStatus('alive');//wuji.setLife(wujiLife);

case3: 翠山和無忌互不影響

cuishanLife.setStatus('dead'); // 翠山自刎了 該行放在上下均可// 無忌用個新對象 不受翠山影響了Life wujiLife = new Life();wujiLife.setStatus('alive');wuji.setLife(wujiLife);dest ,src 還是 src,dest

筆者在這個爬過坑。因為記得有beanutils這個工具,直接import了。發現有copyProperty和copyProperties。 看了下發現是 dest,src ,于是果斷使用,結果發現參數沒了。

其實常見的BeanUtils有2個:spring有BeanUtilsapache的commons也有BeanUtils。

區別如下:

– spring的BeanUtils commons的BeanUtils 方法 copyProperty和copyProperties copyProperties 參數 src ,dest dest,src

這2個用哪個都行,但是要注意區別。 因為他們2個的src和dest是正好相反的,要特別留意。

到此這篇關于Java BeanUtils.copyProperties的詳解的文章就介紹到這了,更多相關Java BeanUtils.copyProperties內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Java
相關文章:
主站蜘蛛池模板: 桁架楼承板-钢筋桁架楼承板-江苏众力达钢筋楼承板厂 | 企业微信scrm管理系统_客户关系管理平台_私域流量运营工具_CRM、ERP、OA软件-腾辉网络 | 商用绞肉机-熟肉切片机-冻肉切丁机-猪肉开条机 - 广州市正盈机械设备有限公司 | 水篦子|雨篦子|镀锌格栅雨水篦子|不锈钢排水篦子|地下车库水箅子—安平县云航丝网制品厂 | 办公室装修_上海办公室设计装修_时尚办公新主张-后街印象 | 黑田精工电磁阀-CAMMOZI气缸-ROSS电磁-上海茂硕机械设备有限公司 | 货车视频监控,油管家,货车油管家-淄博世纪锐行电子科技 | 浙江栓钉_焊钉_剪力钉厂家批发_杭州八建五金制造有限公司 | 成都亚克力制品,PVC板,双色板雕刻加工,亚克力门牌,亚克力标牌,水晶字雕刻制作-零贰捌广告 | 螺纹三通快插接头-弯通快插接头-宁波舜驰气动科技有限公司 | 蜜蜂职场文库_职场求职面试实用的范文资料大全 | 碳刷_刷握_集电环_恒压簧_电刷厂家-上海丹臻机电科技有限公司 | 专业广州网站建设,微信小程序开发,一物一码和NFC应用开发、物联网、外贸商城、定制系统和APP开发【致茂网络】 | 车间除尘设备,VOCs废气处理,工业涂装流水线,伸缩式喷漆房,自动喷砂房,沸石转轮浓缩吸附,机器人喷粉线-山东创杰智慧 | 上海防爆真空干燥箱-上海防爆冷库-上海防爆冷柜?-上海浦下防爆设备厂家? | 搜活动房网—活动房_集装箱活动房_集成房屋_活动房屋 | 合肥活动房_安徽活动板房_集成打包箱房厂家-安徽玉强钢结构集成房屋有限公司 | 重庆磨床过滤机,重庆纸带过滤机,机床伸缩钣金,重庆机床钣金护罩-重庆达鸿兴精密机械制造有限公司 | 结晶点测定仪-润滑脂滴点测定仪-大连煜烁 | 浙江清风侠环保设备有限公司| 模具硅橡胶,人体硅胶,移印硅胶浆厂家-宏图硅胶科技 | 冷水机-工业冷水机-冷水机组-欧科隆品牌保障 | 行星齿轮减速机,减速机厂家,山东减速机-淄博兴江机械制造 | 臭氧老化试验箱,高低温试验箱,恒温恒湿试验箱,防水试验设备-苏州亚诺天下仪器有限公司 | 没斑啦-专业的祛斑美白嫩肤知识网站-去斑经验分享 | 包装机_厂家_价格-山东包装机有限公司 | 四川职高信息网-初高中、大专、职业技术学校招生信息网 | 数显水浴恒温振荡器-分液漏斗萃取振荡器-常州市凯航仪器有限公司 | 退火炉,燃气退火炉,燃气热处理炉生产厂家-丹阳市丰泰工业炉有限公司 | 校服厂家,英伦校服定做工厂,园服生产定制厂商-东莞市艾咪天使校服 | 无锡网站建设_小程序制作_网站设计公司_无锡网络公司_网站制作 | 碳化硅,氮化硅,冰晶石,绢云母,氟化铝,白刚玉,棕刚玉,石墨,铝粉,铁粉,金属硅粉,金属铝粉,氧化铝粉,硅微粉,蓝晶石,红柱石,莫来石,粉煤灰,三聚磷酸钠,六偏磷酸钠,硫酸镁-皓泉新材料 | 【铜排折弯机,钢丝折弯成型机,汽车发泡钢丝折弯机,线材折弯机厂家,线材成型机,铁线折弯机】贝朗折弯机厂家_东莞市贝朗自动化设备有限公司 | 冲锋衣滑雪服厂家-冲锋衣定制工厂-滑雪服加工厂-广东睿牛户外(S-GERT) | 帽子厂家_帽子工厂_帽子定做_义乌帽厂_帽厂_制帽厂_帽子厂_浙江高普制帽厂 | DDoS安全防护官网-领先的DDoS安全防护服务商| 防腐储罐_塑料储罐_PE储罐厂家_淄博富邦滚塑防腐设备科技有限公司 | 厂厂乐-汇聚海量采购信息的B2B微营销平台-厂厂乐官网 | 杭州翻译公司_驾照翻译_专业人工翻译-杭州以琳翻译有限公司官网 组织研磨机-高通量组织研磨仪-实验室多样品组织研磨机-东方天净 | 重庆钣金加工厂家首页-专业定做监控电视墙_操作台 | 郑州宣传片拍摄-TVC广告片拍摄-微电影短视频制作-河南优柿文化传媒有限公司 |