Skip to content

Commit 0cee11e

Browse files
committed
处理EasyFormatter循环引用问题
1 parent 2169ead commit 0cee11e

File tree

3 files changed

+49
-3
lines changed

3 files changed

+49
-3
lines changed

app/src/main/java/com/haoge/sample/easyandroid/activities/EasyLogActivity.kt

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,26 @@ class EasyLogActivity: BaseActivity() {
5757
EasyLog.DEFAULT.d(JSON.toJSONString(any))
5858
}
5959

60+
@OnClick(R.id.printSimplePOJO)
61+
fun printSimplePOJO() {
62+
EasyLog.DEFAULT.d(Simple("Haoge"))
63+
}
64+
65+
@OnClick(R.id.printComplexPOJO)
66+
fun printComplexPOJO() {
67+
EasyLog.DEFAULT.d(Complex("complex message", Simple("kotlin")))
68+
}
69+
70+
@OnClick(R.id.printCirclePOJO)
71+
fun printCirclePOJO() {
72+
val a = CircleA(null)
73+
val b = CircleB(null)
74+
a.b = b
75+
b.a = a
76+
77+
EasyLog.DEFAULT.e(a)
78+
}
79+
6080
@OnClick(R.id.printException)
6181
fun printException() {
6282
// 默认输出的列表最长长度为10,所以这里数量超出限制时。将会进行平铺展示。
@@ -100,4 +120,12 @@ object MyLog {
100120
fun e(message: Any?) {
101121
log.e(message)
102122
}
103-
}
123+
}
124+
125+
data class Simple(val name:String)
126+
127+
data class Complex(val message:String, val simple:Simple)
128+
129+
data class CircleA(var b:CircleB?)
130+
131+
data class CircleB(var a:CircleA?)

app/src/main/res/layout/activity_log.xml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,24 @@
5050
android:layout_width="match_parent"
5151
android:layout_height="wrap_content" />
5252

53+
<Button
54+
android:id="@+id/printSimplePOJO"
55+
android:text="打印简单对象"
56+
android:layout_width="match_parent"
57+
android:layout_height="wrap_content" />
58+
59+
<Button
60+
android:id="@+id/printComplexPOJO"
61+
android:text="打印复杂对象"
62+
android:layout_width="match_parent"
63+
android:layout_height="wrap_content" />
64+
65+
<Button
66+
android:id="@+id/printCirclePOJO"
67+
android:text="打印循环引用对象"
68+
android:layout_width="match_parent"
69+
android:layout_height="wrap_content" />
70+
5371
<Button
5472
android:id="@+id/printException"
5573
android:text="打印异常堆栈"

utils/src/main/java/com/haoge/easyandroid/easy/EasyFormatter.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ class EasyFormatter private constructor(private val builder: Builder) {
130130
return StringBuilder(any.toString())
131131
}
132132

133-
val result = StringBuilder("[${any.javaClass.simpleName}@${any.hashCode()}]{")
133+
val result = StringBuilder("[${any.javaClass.simpleName}]{")
134134
val container = mutableMapOf<String, Any>()
135135
scanFields(any, any.javaClass, container)
136136

@@ -252,7 +252,7 @@ class EasyFormatter private constructor(private val builder: Builder) {
252252

253253
private fun checkIfFormatted(any:Any, invoke:()-> StringBuilder):StringBuilder {
254254
return if (list.contains(any)) {
255-
StringBuilder("(circle ref):${any.javaClass.simpleName}@${any.hashCode()}")
255+
StringBuilder("{(circle ref):${any.javaClass.simpleName}}")
256256
} else {
257257
list.add(any)
258258
invoke.invoke()

0 commit comments

Comments
 (0)