2014-01-31 109 views
0

我需要使用另一個對象的字段在對象中設置一些私人領域。這兩個對象可能不是同一類的實例。
我從簡短的閱讀中看到,我可以使用Apache的BeanUtils和Spring的ReflectionUtils。我無法爲他們找到關於安全性,性能,支持等的令人滿意的解釋。
該解決方案也將用於生產環境,因此我需要一個具體的解決方案。 你對這樣的任務建議採用哪種方法。ReflectionUtils和BeanUtils用於私人領域

回答

0

我想你只需要使用BeanUtils庫。看到我的示例,我做了一個從CustomerBean複製到SellerBean的屬性。

package testes.beanutils; 

import org.apache.commons.beanutils.BeanUtils; 

public class Main { 

public static void main(String[] args) throws Exception { 
    Customer customer = new Customer(); 
    customer.setId((long)1); 
    customer.setName("Bruno"); 
    customer.setLastname("Tafarelo"); 

    Seller seller = new Seller(); 

    BeanUtils.copyProperties(seller, customer); 

    System.out.println(customer); 
    System.out.println(seller); 
    } 
} 

class Customer { 

private Long id; 

private String name; 

private String lastname; 

//getters and setters 

//toString 
} 

class Seller { 

private Long id; 

private String name; 

private int sales; 

//getters and setters 

//toString 
} 
+0

謝謝,但爲什麼?我正在尋找解釋爲什麼我應該使用一個而不是另一個的答案。他們似乎都有能力做你的榜樣。 – GokcenG

+0

好吧。我無法解釋關於春天的反射,但我只是做這個API如果springcore已經是我的應用程序的依賴。 BeanUtils很小,很簡單,被用在像struts這樣的很多項目中。 BeanUtils可以緩存來加速反射的使用。安全性,我知道誰不能設置一個不同類型價值的財產。我使用BeanUtils來將表單html(請求參數)解析爲bean,但我不能填充一個複雜的Collection,但簡單的列表和嵌套的屬性工作正常。對不起,我無法多說或比較這些圖書館。 – btafarelo