不論是使用sPRing-bean包還是使用apache commons-beanutils包的BeanUtils,都是淺拷貝,直接把source中域的值(基本類型值或者引用類型值)復(fù)制一份到target中。
并且在拷貝第三方庫中的Bean千萬要小心,因為有些第三方庫的Bean對象中很可能有一些私有域,這些私有域可能有獨特的用處,這樣直接拷貝到另一個對象中可能會出問題。
在將數(shù)據(jù)導(dǎo)出到Excel表格中時,我需要單獨處理一列的格式化輸出,所以我用BeanUtils單獨為這一列從原有的HSSFCellStyle對象copy了一個新的HSSFCellStyle對象(使用的POI),結(jié)果在運行時總是發(fā)生空指針異常。后來發(fā)現(xiàn),HSSFCellStyle對象有一個方法為 public void cloneStyleFrom(HSSFCellStyle source) ,改用此方法后成功拷貝。
因為第三方的Bean內(nèi)部狀態(tài)不透明,所以拷貝它時一定要小心。
新聞熱點
疑難解答