最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java toString方法重寫工具之ToStringBuilder案例詳解

 更新時間:2021年08月26日 10:24:33   作者:vince_zw  
這篇文章主要介紹了Java toString方法重寫工具之ToStringBuilder案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下

apache的commons-lang3的工具包里有一個ToStringBuilder類,這樣在打日志的時候可以方便的打印出類實例中的各屬性的值。

具體用法如下:

import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
 
public class Message {
 
	private String from;
 
	private String to;
 
	private String body;
 
	public String getFrom() {
		return from;
	}
 
	public void setFrom(String from) {
		this.from = from;
	}
 
	public String getTo() {
		return to;
	}
 
	public void setTo(String to) {
		this.to = to;
	}
 
	public String getBody() {
		return body;
	}
 
	public void setBody(String body) {
		this.body = body;
	}
 
	@Override
	public String toString() {
		return ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE);
	}
	
	public static void main(String[] args) {
		Message msg = new Message();
		msg.setFrom("vince");
		msg.setTo("mike");
		msg.setBody("hello");
		System.out.println(msg.toString());
	}
}

而且支持多種打印格式

多行輸出的:

com.vince.im.dto.Message@af72d8[
from=vince
to=mike
body=hello
]

默認(rèn)一行的:

com.vince.im.dto.Message@af72d8[from=vince,to=mike,body=hello]

NO_FIELD_NAMES_STYLE:

com.vince.im.dto.Message@af72d8[vince,mike,hello]

SHORT_PREFIX_STYLE:

Message[from=vince,to=mike,body=hello]

SIMPLE_STYLE:

vince,mike,hello

原理其實就是通過JAVA的reflect(反射)獲取值,然后組成一個Buffer。

里面部分源碼:

    /**
     * <p>Append to the <code>toString</code> the start of data indicator.</p>
     * 拼裝結(jié)果的
     * @param buffer  the <code>StringBuffer</code> to populate
     * @param object  the <code>Object</code> to build a <code>toString</code> for
     */
    public void appendStart(final StringBuffer buffer, final Object object) {
        if (object != null) {
            appendClassName(buffer, object);
            appendIdentityHashCode(buffer, object);
            appendContentStart(buffer);
            if (fieldSeparatorAtStart) {
                appendFieldSeparator(buffer);
            }
        }
    }
 
    /**
     * <p>Append the {@link System#identityHashCode(java.lang.Object)}.</p>
     * 拼裝對象hashcode
     * @param buffer  the <code>StringBuffer</code> to populate
     * @param object  the <code>Object</code> whose id to output
     */
    protected void appendIdentityHashCode(final StringBuffer buffer, final Object object) {
        if (this.isUseIdentityHashCode() && object!=null) {
            register(object);
            buffer.append('@');
            buffer.append(Integer.toHexString(System.identityHashCode(object)));
        }
    }

需要注意的是:

Builds a toString value using the default ToStringStyle through reflection.

It uses AccessibleObject.setAccessible to gain access to private fields. This means that it will throw a security exception if run under a security manager, if the permissions are not set up correctly. It is also not as efficient as testing explicitly.

Transient members will be not be included, as they are likely derived. Static fields will not be included. Superclass fields will be appended.

也就是說transient和static修飾的屬性不能打印出來,但是父類的是可以打印出來的,使用的時候一定要注意了。

到此這篇關(guān)于Java toString方法重寫工具之ToStringBuilder案例詳解的文章就介紹到這了,更多相關(guān)Java toString方法重寫工具之ToStringBuilder內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java實現(xiàn)的計算稀疏矩陣余弦相似度示例

    Java實現(xiàn)的計算稀疏矩陣余弦相似度示例

    這篇文章主要介紹了Java實現(xiàn)的計算稀疏矩陣余弦相似度功能,涉及java基于HashMap的數(shù)值計算相關(guān)操作技巧,需要的朋友可以參考下
    2018-07-07
  • Java實現(xiàn)級聯(lián)下拉結(jié)構(gòu)的示例代碼

    Java實現(xiàn)級聯(lián)下拉結(jié)構(gòu)的示例代碼

    在開發(fā)過程中,會遇到很多的實體需要將查出的數(shù)據(jù)處理為下拉或者級聯(lián)下拉的結(jié)構(gòu),提供給前端進(jìn)行展示。本文為大家介紹了java封裝下拉和級聯(lián)下拉的通用工具類,需要的可以參考一下
    2022-06-06
  • Spring根據(jù)XML配置文件注入屬性的方法

    Spring根據(jù)XML配置文件注入屬性的方法

    下面小編就為大家?guī)硪黄猄pring根據(jù)XML配置文件注入屬性的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • Java中定義Logger的三種常用方式介紹

    Java中定義Logger的三種常用方式介紹

    在 Java 開發(fā)中,日志記錄是不可或缺的一部分,它幫助我們跟蹤程序的運行狀態(tài)、調(diào)試問題以及記錄重要信息本文將詳細(xì)介紹 Java 中定義 Logger 的三種方式,大家可以根據(jù)需求進(jìn)行選擇
    2025-03-03
  • spring boot打jar包發(fā)布的方法

    spring boot打jar包發(fā)布的方法

    這篇文章主要介紹了spring boot打jar包發(fā)布的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • Java面向?qū)ο笾畣卫O(shè)計模式詳解

    Java面向?qū)ο笾畣卫O(shè)計模式詳解

    這篇文章主要介紹了Java面向?qū)ο笾畣卫O(shè)計模式詳解,所謂類的單例設(shè)計模式,就是采取一定的方法保證在整個的軟件系統(tǒng)中,對某個類只能存在一個對象實例,并且該類只提供一個取得其對象實例的方法,需要的朋友可以參考下
    2024-01-01
  • VSCode搭建Java開發(fā)環(huán)境的超詳細(xì)步驟

    VSCode搭建Java開發(fā)環(huán)境的超詳細(xì)步驟

    VSCode是一款多平臺的源代碼編輯器,支持多種編程語言,它輕量級、功能強大,通過豐富的插件生態(tài)系統(tǒng)可以支持更多語言和運行時,如C++、C#、Java、Python等,這篇文章主要介紹了VSCode搭建Java開發(fā)環(huán)境的超詳細(xì)步驟,需要的朋友可以參考下
    2024-10-10
  • java selenium操作彈出對話框示例講解

    java selenium操作彈出對話框示例講解

    本文主要介紹java selenium操作彈出對話框,這里給大家整理了相關(guān)資料,并附示例代碼和實現(xiàn)效果圖,有興趣的小伙伴可以參考下
    2016-08-08
  • 詳解Spring框架---IOC裝配Bean

    詳解Spring框架---IOC裝配Bean

    本篇文章主要介紹了詳解Spring框架---IOC裝配Bean,提供了三種方式實例化Bean,具有一定的參考價值,有興趣的可以了解一下。
    2017-03-03
  • Spring實現(xiàn)HikariCP連接池的示例代碼

    Spring實現(xiàn)HikariCP連接池的示例代碼

    在SpringBoot 2.0中,我們使用默認(rèn)連接池是HikariCP,本文講一下HikariCP的具體使用,具有一定的參考價值,感興趣的可以了解一下
    2021-08-08

最新評論

临海市| 龙游县| 浦县| 施秉县| 廉江市| 奉化市| 犍为县| 雷波县| 陆河县| 盘山县| 白河县| 栾川县| 北票市| 丹巴县| 清徐县| 洱源县| 澄江县| 华安县| 盐山县| 隆昌县| 河北区| 铁岭县| 巫溪县| 遂溪县| 宁远县| 咸阳市| 格尔木市| 涞水县| 祁东县| 万宁市| 崇阳县| 营山县| 上饶市| 高密市| 莱阳市| 游戏| 三都| 塘沽区| 丰顺县| 奉贤区| 渝中区|