国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

ToStringBuilder(二):兩種方法比較

2019-11-11 05:46:02
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

用反射方法的優(yōu)點(diǎn):

代碼簡(jiǎn)潔,不需要有什么配置Model屬性有變化時(shí)不必再手動(dòng)更改toString方法

缺點(diǎn):

有些屬性并不想讓輸出來(lái)(可能沒(méi)用,也可能出于安全方面考慮),但是反射時(shí)所有的屬性值都給輸出來(lái)

安全方面的考慮. 一般來(lái)說(shuō),一個(gè)java類(lèi)是的屬性都是PRivate的,這樣用反射來(lái)構(gòu)建toString方法時(shí),就得繞過(guò)private的限制. 于是 If your system is running under a restrictive SecurityManager , you may need to alter your configuration to allow Commons Lang to bypass these security restrictions.

彌補(bǔ)用反射方法不夠靈活的一個(gè)擴(kuò)展. 由假設(shè)一個(gè)類(lèi)里有名為passWord這樣的屬性,一般情況下,是不想讓toString輸入的, 但用反射默認(rèn)情況下是會(huì)輸出的. 這怎么辦呢?看ReflectionToStringBuilder源碼里文檔時(shí),發(fā)現(xiàn)這么一個(gè)擴(kuò)展: 通過(guò)子類(lèi),覆蓋其accept方法來(lái)加以篩選.具體如下所示:

public String toString() { return (new ReflectionToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) {// 注意這里為了表達(dá)上的簡(jiǎn)潔用了匿名內(nèi)部類(lèi). protected boolean accept(Field f) { return super.accept(f) && !f.getName().equals("password"); } }).toString();}

這樣在toString時(shí), 就會(huì)跳過(guò)名為password的屬性.


發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 丰镇市| 惠安县| 沂源县| 万州区| 临桂县| 永川市| 贡山| 云阳县| 比如县| 克什克腾旗| 柳林县| 红安县| 五莲县| 丽水市| 晋宁县| 隆昌县| 阿尔山市| 海城市| 巴塘县| 利辛县| 塘沽区| 蕲春县| 贺州市| 盐城市| 五指山市| 丹阳市| 曲阜市| 黄龙县| 方山县| 昌黎县| 马边| 黔东| 克拉玛依市| 那坡县| 儋州市| 那坡县| 石楼县| 建瓯市| 青川县| 武隆县| 西吉县|