Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
爱吃血肠
spring-framework
提交
1d6e44ab
S
spring-framework
项目概览
爱吃血肠
/
spring-framework
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
spring-framework
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
1d6e44ab
编写于
7月 16, 2019
作者:
S
stsypanov
提交者:
Sam Brannen
7月 24, 2019
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Use StringJoiner where possible to simplify String joining
Closes gh-23300
上级
5190eaf5
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
155 addition
and
127 deletion
+155
-127
spring-core/src/main/java/org/springframework/core/style/DefaultValueStyler.java
...va/org/springframework/core/style/DefaultValueStyler.java
+24
-36
spring-core/src/main/java/org/springframework/util/ObjectUtils.java
...e/src/main/java/org/springframework/util/ObjectUtils.java
+32
-91
spring-core/src/test/java/org/springframework/core/style/DefaultValueStylerTest.java
...rg/springframework/core/style/DefaultValueStylerTest.java
+99
-0
未找到文件。
spring-core/src/main/java/org/springframework/core/style/DefaultValueStyler.java
浏览文件 @
1d6e44ab
...
...
@@ -18,10 +18,10 @@ package org.springframework.core.style;
import
java.lang.reflect.Method
;
import
java.util.Collection
;
import
java.util.Iterator
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Set
;
import
java.util.StringJoiner
;
import
org.springframework.lang.Nullable
;
import
org.springframework.util.ClassUtils
;
...
...
@@ -82,20 +82,15 @@ public class DefaultValueStyler implements ValueStyler {
}
private
<
K
,
V
>
String
style
(
Map
<
K
,
V
>
value
)
{
StringBuilder
result
=
new
StringBuilder
(
value
.
size
()
*
8
+
16
);
result
.
append
(
MAP
+
"["
);
for
(
Iterator
<
Map
.
Entry
<
K
,
V
>>
it
=
value
.
entrySet
().
iterator
();
it
.
hasNext
();)
{
Map
.
Entry
<
K
,
V
>
entry
=
it
.
next
();
result
.
append
(
style
(
entry
));
if
(
it
.
hasNext
())
{
result
.
append
(
','
).
append
(
' '
);
}
}
if
(
value
.
isEmpty
())
{
result
.
append
(
EMPTY
);
return
MAP
+
'['
+
EMPTY
+
']'
;
}
StringJoiner
result
=
new
StringJoiner
(
", "
,
"["
,
"]"
);
for
(
Map
.
Entry
<
K
,
V
>
entry
:
value
.
entrySet
())
{
result
.
add
(
style
(
entry
));
}
result
.
append
(
"]"
);
return
result
.
toString
();
return
MAP
+
result
;
}
private
String
style
(
Map
.
Entry
<?,
?>
value
)
{
...
...
@@ -103,19 +98,17 @@ public class DefaultValueStyler implements ValueStyler {
}
private
String
style
(
Collection
<?>
value
)
{
StringBuilder
result
=
new
StringBuilder
(
value
.
size
()
*
8
+
16
);
result
.
append
(
getCollectionTypeString
(
value
)).
append
(
'['
);
for
(
Iterator
<?>
i
=
value
.
iterator
();
i
.
hasNext
();)
{
result
.
append
(
style
(
i
.
next
()));
if
(
i
.
hasNext
())
{
result
.
append
(
','
).
append
(
' '
);
}
}
String
collectionType
=
getCollectionTypeString
(
value
);
if
(
value
.
isEmpty
())
{
re
sult
.
append
(
EMPTY
)
;
re
turn
collectionType
+
'['
+
EMPTY
+
']'
;
}
result
.
append
(
"]"
);
return
result
.
toString
();
StringJoiner
result
=
new
StringJoiner
(
", "
,
"["
,
"]"
);
for
(
Object
o
:
value
)
{
result
.
add
(
style
(
o
));
}
return
collectionType
+
result
;
}
private
String
getCollectionTypeString
(
Collection
<?>
value
)
{
...
...
@@ -131,20 +124,15 @@ public class DefaultValueStyler implements ValueStyler {
}
private
String
styleArray
(
Object
[]
array
)
{
StringBuilder
result
=
new
StringBuilder
(
array
.
length
*
8
+
16
);
result
.
append
(
ARRAY
+
"<"
).
append
(
ClassUtils
.
getShortName
(
array
.
getClass
().
getComponentType
())).
append
(
">["
);
for
(
int
i
=
0
;
i
<
array
.
length
-
1
;
i
++)
{
result
.
append
(
style
(
array
[
i
]));
result
.
append
(
','
).
append
(
' '
);
}
if
(
array
.
length
>
0
)
{
result
.
append
(
style
(
array
[
array
.
length
-
1
]));
if
(
array
.
length
==
0
)
{
return
ARRAY
+
'<'
+
ClassUtils
.
getShortName
(
array
.
getClass
().
getComponentType
())
+
'>'
+
'['
+
EMPTY
+
']'
;
}
else
{
result
.
append
(
EMPTY
);
StringJoiner
result
=
new
StringJoiner
(
", "
,
"["
,
"]"
);
for
(
Object
o
:
array
)
{
result
.
add
(
style
(
o
));
}
result
.
append
(
"]"
);
return
result
.
toString
();
return
ARRAY
+
'<'
+
ClassUtils
.
getShortName
(
array
.
getClass
().
getComponentType
())
+
'>'
+
result
;
}
}
spring-core/src/main/java/org/springframework/util/ObjectUtils.java
浏览文件 @
1d6e44ab
...
...
@@ -734,19 +734,11 @@ public abstract class ObjectUtils {
if
(
length
==
0
)
{
return
EMPTY_ARRAY
;
}
StringBuilder
sb
=
new
StringBuilder
();
for
(
int
i
=
0
;
i
<
length
;
i
++)
{
if
(
i
==
0
)
{
sb
.
append
(
ARRAY_START
);
}
else
{
sb
.
append
(
ARRAY_ELEMENT_SEPARATOR
);
}
sb
.
append
(
array
[
i
]);
StringJoiner
sj
=
new
StringJoiner
(
ARRAY_ELEMENT_SEPARATOR
,
ARRAY_START
,
ARRAY_END
);
for
(
boolean
b
:
array
)
{
sj
.
add
(
String
.
valueOf
(
b
));
}
sb
.
append
(
ARRAY_END
);
return
sb
.
toString
();
return
sj
.
toString
();
}
/**
...
...
@@ -766,18 +758,11 @@ public abstract class ObjectUtils {
if
(
length
==
0
)
{
return
EMPTY_ARRAY
;
}
StringBuilder
sb
=
new
StringBuilder
();
for
(
int
i
=
0
;
i
<
length
;
i
++)
{
if
(
i
==
0
)
{
sb
.
append
(
ARRAY_START
);
}
else
{
sb
.
append
(
ARRAY_ELEMENT_SEPARATOR
);
}
sb
.
append
(
array
[
i
]);
StringJoiner
sj
=
new
StringJoiner
(
ARRAY_ELEMENT_SEPARATOR
,
ARRAY_START
,
ARRAY_END
);
for
(
byte
b
:
array
)
{
sj
.
add
(
String
.
valueOf
(
b
));
}
sb
.
append
(
ARRAY_END
);
return
sb
.
toString
();
return
sj
.
toString
();
}
/**
...
...
@@ -797,18 +782,11 @@ public abstract class ObjectUtils {
if
(
length
==
0
)
{
return
EMPTY_ARRAY
;
}
StringBuilder
sb
=
new
StringBuilder
();
for
(
int
i
=
0
;
i
<
length
;
i
++)
{
if
(
i
==
0
)
{
sb
.
append
(
ARRAY_START
);
}
else
{
sb
.
append
(
ARRAY_ELEMENT_SEPARATOR
);
}
sb
.
append
(
"'"
).
append
(
array
[
i
]).
append
(
"'"
);
StringJoiner
sj
=
new
StringJoiner
(
ARRAY_ELEMENT_SEPARATOR
,
ARRAY_START
,
ARRAY_END
);
for
(
char
c
:
array
)
{
sj
.
add
(
'\''
+
String
.
valueOf
(
c
)
+
'\''
);
}
sb
.
append
(
ARRAY_END
);
return
sb
.
toString
();
return
sj
.
toString
();
}
/**
...
...
@@ -828,19 +806,11 @@ public abstract class ObjectUtils {
if
(
length
==
0
)
{
return
EMPTY_ARRAY
;
}
StringBuilder
sb
=
new
StringBuilder
();
for
(
int
i
=
0
;
i
<
length
;
i
++)
{
if
(
i
==
0
)
{
sb
.
append
(
ARRAY_START
);
}
else
{
sb
.
append
(
ARRAY_ELEMENT_SEPARATOR
);
}
sb
.
append
(
array
[
i
]);
StringJoiner
sj
=
new
StringJoiner
(
ARRAY_ELEMENT_SEPARATOR
,
ARRAY_START
,
ARRAY_END
);
for
(
double
d
:
array
)
{
sj
.
add
(
String
.
valueOf
(
d
));
}
sb
.
append
(
ARRAY_END
);
return
sb
.
toString
();
return
sj
.
toString
();
}
/**
...
...
@@ -860,19 +830,11 @@ public abstract class ObjectUtils {
if
(
length
==
0
)
{
return
EMPTY_ARRAY
;
}
StringBuilder
sb
=
new
StringBuilder
();
for
(
int
i
=
0
;
i
<
length
;
i
++)
{
if
(
i
==
0
)
{
sb
.
append
(
ARRAY_START
);
}
else
{
sb
.
append
(
ARRAY_ELEMENT_SEPARATOR
);
}
sb
.
append
(
array
[
i
]);
StringJoiner
sj
=
new
StringJoiner
(
ARRAY_ELEMENT_SEPARATOR
,
ARRAY_START
,
ARRAY_END
);
for
(
float
f
:
array
)
{
sj
.
add
(
String
.
valueOf
(
f
));
}
sb
.
append
(
ARRAY_END
);
return
sb
.
toString
();
return
sj
.
toString
();
}
/**
...
...
@@ -892,18 +854,11 @@ public abstract class ObjectUtils {
if
(
length
==
0
)
{
return
EMPTY_ARRAY
;
}
StringBuilder
sb
=
new
StringBuilder
();
for
(
int
i
=
0
;
i
<
length
;
i
++)
{
if
(
i
==
0
)
{
sb
.
append
(
ARRAY_START
);
}
else
{
sb
.
append
(
ARRAY_ELEMENT_SEPARATOR
);
}
sb
.
append
(
array
[
i
]);
StringJoiner
sj
=
new
StringJoiner
(
ARRAY_ELEMENT_SEPARATOR
,
ARRAY_START
,
ARRAY_END
);
for
(
int
i
:
array
)
{
sj
.
add
(
String
.
valueOf
(
i
));
}
sb
.
append
(
ARRAY_END
);
return
sb
.
toString
();
return
sj
.
toString
();
}
/**
...
...
@@ -923,18 +878,11 @@ public abstract class ObjectUtils {
if
(
length
==
0
)
{
return
EMPTY_ARRAY
;
}
StringBuilder
sb
=
new
StringBuilder
();
for
(
int
i
=
0
;
i
<
length
;
i
++)
{
if
(
i
==
0
)
{
sb
.
append
(
ARRAY_START
);
}
else
{
sb
.
append
(
ARRAY_ELEMENT_SEPARATOR
);
}
sb
.
append
(
array
[
i
]);
StringJoiner
sj
=
new
StringJoiner
(
ARRAY_ELEMENT_SEPARATOR
,
ARRAY_START
,
ARRAY_END
);
for
(
long
l
:
array
)
{
sj
.
add
(
String
.
valueOf
(
l
));
}
sb
.
append
(
ARRAY_END
);
return
sb
.
toString
();
return
sj
.
toString
();
}
/**
...
...
@@ -954,18 +902,11 @@ public abstract class ObjectUtils {
if
(
length
==
0
)
{
return
EMPTY_ARRAY
;
}
StringBuilder
sb
=
new
StringBuilder
();
for
(
int
i
=
0
;
i
<
length
;
i
++)
{
if
(
i
==
0
)
{
sb
.
append
(
ARRAY_START
);
}
else
{
sb
.
append
(
ARRAY_ELEMENT_SEPARATOR
);
}
sb
.
append
(
array
[
i
]);
StringJoiner
sj
=
new
StringJoiner
(
ARRAY_ELEMENT_SEPARATOR
,
ARRAY_START
,
ARRAY_END
);
for
(
short
s
:
array
)
{
sj
.
add
(
String
.
valueOf
(
s
));
}
sb
.
append
(
ARRAY_END
);
return
sb
.
toString
();
return
sj
.
toString
();
}
}
spring-core/src/test/java/org/springframework/core/style/DefaultValueStylerTest.java
0 → 100644
浏览文件 @
1d6e44ab
package
org.springframework.core.style
;
import
org.junit.Test
;
import
java.util.Arrays
;
import
java.util.Collections
;
import
java.util.HashMap
;
import
java.util.Iterator
;
import
java.util.LinkedHashMap
;
import
java.util.List
;
import
java.util.Map
;
import
static
org
.
assertj
.
core
.
api
.
Assertions
.
assertThat
;
public
class
DefaultValueStylerTest
{
private
DefaultValueStyler
styler
=
new
DefaultValueStyler
();
@Test
public
void
style
()
throws
NoSuchMethodException
{
assertThat
(
styler
.
style
(
null
)).
isEqualTo
(
"[null]"
);
assertThat
(
styler
.
style
(
"str"
)).
isEqualTo
(
"'str'"
);
assertThat
(
styler
.
style
(
String
.
class
)).
isEqualTo
(
"String"
);
assertThat
(
styler
.
style
(
String
.
class
.
getMethod
(
"toString"
))).
isEqualTo
(
"toString@String"
);
}
@Test
public
void
style_plainObject
()
{
final
Object
obj
=
new
Object
();
assertThat
(
styler
.
style
(
obj
)).
isEqualTo
(
String
.
valueOf
(
obj
));
}
@Test
public
void
style_map
()
{
Map
<
String
,
Integer
>
map
=
Collections
.
emptyMap
();
assertThat
(
styler
.
style
(
map
)).
isEqualTo
(
"map[[empty]]"
);
map
=
Collections
.
singletonMap
(
"key"
,
1
);
assertThat
(
styler
.
style
(
map
)).
isEqualTo
(
"map['key' -> 1]"
);
map
=
new
HashMap
<>();
map
.
put
(
"key1"
,
1
);
map
.
put
(
"key2"
,
2
);
assertThat
(
styler
.
style
(
map
)).
isEqualTo
(
"map['key1' -> 1, 'key2' -> 2]"
);
}
@Test
public
void
style_entry
()
{
final
Map
<
String
,
Integer
>
map
=
new
LinkedHashMap
<>();
map
.
put
(
"key1"
,
1
);
map
.
put
(
"key2"
,
2
);
final
Iterator
<
Map
.
Entry
<
String
,
Integer
>>
entries
=
map
.
entrySet
().
iterator
();
assertThat
(
styler
.
style
(
entries
.
next
())).
isEqualTo
(
"'key1' -> 1"
);
assertThat
(
styler
.
style
(
entries
.
next
())).
isEqualTo
(
"'key2' -> 2"
);
}
@Test
public
void
style_collection
()
{
List
<
Integer
>
list
=
Collections
.
emptyList
();
assertThat
(
styler
.
style
(
list
)).
isEqualTo
(
"list[[empty]]"
);
list
=
Collections
.
singletonList
(
1
);
assertThat
(
styler
.
style
(
list
)).
isEqualTo
(
"list[1]"
);
list
=
Arrays
.
asList
(
1
,
2
);
assertThat
(
styler
.
style
(
list
)).
isEqualTo
(
"list[1, 2]"
);
}
@Test
public
void
style_primitiveArray
()
{
int
[]
array
=
new
int
[
0
];
assertThat
(
styler
.
style
(
array
)).
isEqualTo
(
"array<Object>[[empty]]"
);
array
=
new
int
[]{
1
};
assertThat
(
styler
.
style
(
array
)).
isEqualTo
(
"array<Integer>[1]"
);
array
=
new
int
[]{
1
,
2
};
assertThat
(
styler
.
style
(
array
)).
isEqualTo
(
"array<Integer>[1, 2]"
);
}
@Test
public
void
style_objectArray
()
{
String
[]
array
=
new
String
[
0
];
assertThat
(
styler
.
style
(
array
)).
isEqualTo
(
"array<String>[[empty]]"
);
array
=
new
String
[]{
"str1"
};
assertThat
(
styler
.
style
(
array
)).
isEqualTo
(
"array<String>['str1']"
);
array
=
new
String
[]{
"str1"
,
"str2"
};
assertThat
(
styler
.
style
(
array
)).
isEqualTo
(
"array<String>['str1', 'str2']"
);
}
}
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录