Java: วิธีคัดลอกคุณสมบัติจาก One Bean ไปยัง Another
เผยแพร่แล้ว: 2018-06-26นักพัฒนา Java ส่วนใหญ่ใช้ในการสร้างคลาส Java ที่สอดคล้องกับรูปแบบการตั้งชื่อ JavaBeans สำหรับตัวรับและตัวตั้งค่าคุณสมบัติ เป็นเรื่องปกติที่จะเข้าถึงวิธีการเหล่านี้โดยตรง โดยใช้การเรียกใช้ เมธอด getXxx และ setXxx ที่เกี่ยวข้อง
อย่างไรก็ตาม มีบางโอกาสที่จำเป็นต้องมีการเข้าถึงแบบไดนามิกไปยังคุณสมบัติของอ็อบเจ็กต์ Java (โดยที่ไม่รู้คอมไพล์ในของคุณสมบัติ getter และเมธอด setter ที่จะเรียก)
ตัวอย่างกรณีการใช้งาน ได้แก่:
- การสร้างภาษาสคริปต์ที่โต้ตอบกับโมเดลวัตถุ Java (เช่น Bean Scripting Framework)
- การสร้างตัวประมวลผลภาษาของเทมเพลตสำหรับการนำเสนอทางเว็บและการใช้งานที่คล้ายกัน (เช่น JSP หรือ Velocity)
- การสร้างไลบรารีแท็กแบบกำหนดเองสำหรับสภาพแวดล้อม JSP และ XSP (เช่น Apache Taglibs, Struts, Cocoon)
- การใช้ทรัพยากรการกำหนดค่าตาม XML (เช่น สคริปต์บิลด์ Ant, ตัวให้คำอธิบายการปรับใช้เว็บแอปพลิเคชัน, ไฟล์เซิร์ฟเวอร์ Tomcat's server.xml )
จาการ์ต้า คอมมอนส์ BeanUtils
ส์ ไลบรารีมีฟังก์ชันการทำงานที่หลากหลายสำหรับการทำงานกับ JavaBeans BeanUtils เวอร์ชัน 1.8.3 มีการพึ่งพา CommonsLogging library
นอกจากนี้ ในบทช่วยสอนนี้ ฉันได้ใช้ ToStringBuilder
ในไลบรารี Commons Lang เพื่อส่งออกคุณสมบัติของ JavaBeans ในตัวอย่างนี้
ต้องอ่านอีก:
- วิธีสร้าง Java Thread Dump โดยทางโปรแกรม
- วิธีการแทนที่เท่ากับ () และแฮชโค้ด () วิธีการใน Java
นี่เป็นตัวอย่าง Java อย่างง่ายที่สาธิตวิธีการคัดลอกคุณสมบัติจาก One Bean ไปยังอีกอันหนึ่ง
CrunchifyBeanCopyExample.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
package crunchify . com . tutorial ; import java . lang . reflect . InvocationTargetException ; import org . apache . commons . beanutils . BeanUtils ; import org . apache . commons . lang . builder . ToStringBuilder ; /** * @author Crunchify.com * */ public class CrunchifyBeanCopyExample { public static void main ( String [ ] args ) { CrunchifyBeanCopyFrom bean1 = new CrunchifyBeanCopyFrom ( "Crunchify" , "Online Java and WordPress Tutorials" ) ; CrunchifyBeanCopyTo bean2 = new CrunchifyBeanCopyTo ( "Paypal" , "Financial Place" ) ; System . out . println ( ToStringBuilder . reflectionToString ( bean1 ) ) ; System . out . println ( ToStringBuilder . reflectionToString ( bean2 ) ) ; try { System . out . println ( "\nCopying properties from fromBean to toBean...\n" ) ; BeanUtils . copyProperties ( bean2 , bean1 ) ; } catch ( IllegalAccessException e ) { e . printStackTrace ( ) ; } catch ( InvocationTargetException e ) { e . printStackTrace ( ) ; } System . out . println ( ToStringBuilder . reflectionToString ( bean1 ) ) ; System . out . println ( ToStringBuilder . reflectionToString ( bean2 ) ) ; } } |
CrunchifyBeanCopyFrom.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
package com . crunchify . tutorials ; import java . io . Serializable ; /** * @author Crunchify.com * */ @SuppressWarnings ( "serial" ) public class CrunchifyBeanCopyFrom implements Serializable { private String name ; private String myProp ; public CrunchifyBeanCopyFrom ( ) { } public CrunchifyBeanCopyFrom ( String name , String myProp ) { this . name = name ; this . myProp = myProp ; } public String getMyProp ( ) { return myProp ; } public void setMyProp ( String prop ) { myProp = prop ; } public String getName ( ) { return name ; } public void setName ( String name ) { this . name = name ; } } |
CrunchifyBeanCopyTo.java

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
package com . crunchify . tutorials ; import java . io . Serializable ; /** * @author Crunchify.com * */ @SuppressWarnings ( "serial" ) public class CrunchifyBeanCopyTo implements Serializable { private String name ; private String myProp ; public CrunchifyBeanCopyTo ( ) { } public CrunchifyBeanCopyTo ( String name , String myProp ) { this . name = name ; this . myProp = myProp ; } public String getMyProp ( ) { return myProp ; } public void setMyProp ( String prop ) { myProp = prop ; } public String getName ( ) { return name ; } public void setName ( String name ) { this . name = name ; } } |
เอาท์พุท:
1 2 3 4 5 6 7 |
crunchify . com . tutorial . CrunchifyBeanCopyFrom @ 58fe210a [ name = Crunchify , myProp = Online Java and WordPress Tutorials ] crunchify . com . tutorial . CrunchifyBeanCopyTo @ 66780515 [ name = Paypal , myProp = Financial Place ] Copying properties from fromBean to toBean . . . crunchify . com . tutorial . CrunchifyBeanCopyFrom @ 58fe210a [ name = Crunchify , myProp = Online Java and WordPress Tutorials ] crunchify . com . tutorial . CrunchifyBeanCopyTo @ 66780515 [ name = Crunchify , myProp = Online Java and WordPress Tutorials ] |
นี่คือการพึ่งพา maven:
การพึ่งพา Apache Common Beanutils Maven
1 2 3 4 5 |
< dependency > < groupId > commons - beanutils < / groupId > < artifactId > commons - beanutils < / artifactId > < version > 1.9.3 < / version > < / dependency > |
Apache Commons Logging Maven ขึ้นต่อกัน
1 2 3 4 5 |
< dependency > < groupId > commons - logging < / groupId > < artifactId > commons - logging < / artifactId > < version > 1.2 < / version > < / dependency > |