Java: Bir Fasulyeden Diğerine Özellikler Nasıl Kopyalanır?
Yayınlanan: 2018-06-26Çoğu Java geliştiricisi, özellik alıcılar ve ayarlayıcılar için JavaBeans adlandırma modellerine uyan Java sınıfları oluşturmaya alışkındır. Daha sonra ilgili getXxx ve setXxx yöntemlerine yapılan çağrıları kullanarak bu yöntemlere doğrudan erişmek doğaldır.
Ancak, Java nesne özelliklerine (çağrılacak özellik alıcı ve ayarlayıcı yöntemleri hakkında derlenmiş bilgi olmadan) dinamik erişimin gerekli olduğu bazı durumlar vardır.
Örnek kullanım durumları şunları içerir:
- Java nesne modeliyle etkileşime giren komut dosyası dilleri oluşturma (Bean Komut Dosyası Oluşturma Çerçevesi gibi).
- Web sunumu ve benzer kullanımlar için şablon dil işlemcileri oluşturma (JSP veya Velocity gibi).
- JSP ve XSP ortamları için özel etiket kitaplıkları oluşturma (Apache Taglibs, Struts, Cocoon gibi).
- XML tabanlı yapılandırma kaynaklarını tüketme (Ant derleme komut dosyaları, web uygulaması dağıtım tanımlayıcıları, Tomcat'in server.xml dosyası gibi).
Jakarta Commons BeanUtils
kütüphane, JavaBeans ile çalışmak için çeşitli işlevlere sahiptir. BeanUtils'in 1.8.3 sürümü, CommonsLogging library
bağımlıdır.
Ek olarak, bu öğreticide, bu örnekte JavaBeans'in özelliklerinin çıktısını almak için Commons Lang kitaplığındaki ToStringBuilder
kullandım.
Bir diğeri okumalı:
- Java Thread Dump Programlı Olarak Nasıl Oluşturulur
- Java'da equals() ve hashcode() Yöntemi nasıl geçersiz kılınır
Bu, özellikleri Bir Fasulyeden diğerine kopyalamanın yolunu gösteren basit bir Java Örneğidir.
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 ; } } |
Çıktı:
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 ] |
İşte maven bağımlılıkları:
Apache Ortak Beanutils Maven bağımlılığı
1 2 3 4 5 |
< dependency > < groupId > commons - beanutils < / groupId > < artifactId > commons - beanutils < / artifactId > < version > 1.9.3 < / version > < / dependency > |
Apache Commons Logging Maven bağımlılığı
1 2 3 4 5 |
< dependency > < groupId > commons - logging < / groupId > < artifactId > commons - logging < / artifactId > < version > 1.2 < / version > < / dependency > |