複雜物件的輸出 定製toString

2021-08-30 07:01:45 字數 2324 閱讀 8986

先來看乙個類

public class complexobject implements serializable
複雜物件complexobject包含了如下屬性:

1基本型別:string、列舉、int

2date物件

3.自定義物件

4.list集合

5.map物件

如果輸出的物件更易看清每乙個欄位的值呢

1.tostringbuilder的預設style

呼叫方式:tostringbuilder.reflectiontostring(object)

2.tostringbuilder的預設multi_line_style

呼叫方式:tostringbuilder.reflectiontostring(customer,tostringstyle.multi_line_style)

3.自定製tostring方法

private void getfields(object obj, stringbuffer str, int level, boolean islistelement)

throws illegalargumentexception,

illegalacces***ception

class clazz = obj.getclass();

if (clazz == complexobject.class)

// 當前輸入物件為list元素

if (islistelement)

level++;

islistelement = false;

}// 獲得當前輸入物件宣告的所有屬性

field fieldarray = clazz.getdeclaredfields();

for (field field : fieldarray)

field.setaccessible(true);

// 當前屬性未賦值

if (field.get(obj) == null) else if (field.gettype() == subtype1.class

|| field.gettype() == subtype2.class ) else if (field.gettype() == list.class)

} else if (field.gettype() == map.class)

}} else if (field.gettype() == date.class)

else

}}

呼叫方式:

public string tostring()  catch (illegalargumentexception e)  catch (illegalacces***ception e) 

return str.tostring();

}

輸出結構:

----------------------

complexobject

└—— serialversionuid = -3986831089858789914

└—— id= 123

└—— name = ss

└—— type = private_account

└—— national = null

└—— createstatus = open

└—— enablestatus = can_use

└—— gmtcreate = 2008-09-18 17:42:27

└—— gmtmodified = null

└—— memo = null

└—— subtype1list

└—— subtype1

└—— subtype1屬性1= 2088102000419591

└—— subtype1屬性2 = 2

└—— subtype1屬性3 = 3

└—— subtype1屬性4 = 4

└—— subtype1屬性5 = 5

└—— subtype2

└—— subtype2屬性1= 1

└—— subtype2屬性2= 2

└—— subtype2屬性3= 3

└—— subtype2屬性4= 4

└—— infomap

└—— key1= value1

└—— key2= value2

└—— key3= value3

└—— key4= value4

使用反射,支援任意物件型別巢狀

用VisualBrush定製複雜的按鈕樣式

自 visualbrush是一種比較特殊的筆刷,它的功能仍然是用來給元素填充圖案,但它的內容卻可以是各種控制項。你可以將其理解為乙個普通的容器,但在其內部的所有控制項都會失去互動能力,而只保留顯示能力。你可以通過本例學習到關於visualbrush的使用方法,以及複雜樣式的定製技巧。首先來看一下我們...

用VisualBrush定製複雜的按鈕樣式

visualbrush是一種比較特殊的筆刷,它的功能仍然是用來給元素填充圖案,但它的內容卻可以是各種控制項。你可以將其理解為乙個普通的容器,但在其內部的所有控制項都會失去互動能力,而只保留顯示能力。你可以通過本例學習到關於visualbrush的使用方法,以及複雜樣式的定製技巧。首先來看一下我們將要...

Unity定製 Image Text的物件生成

2016.4.14 昨天看到 雨凇的 unity3d研究院之ugui乙個優化效率小技巧 完善了他所說的 using unityengine using unityengine.ui using system.collections using unityeditor using unityengin...