Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
dk131072
spring-framework
提交
c15bbd67
S
spring-framework
项目概览
dk131072
/
spring-framework
与 Fork 源项目一致
从无法访问的项目Fork
通知
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,发现更多精彩内容 >>
提交
c15bbd67
编写于
6月 07, 2017
作者:
D
diguage
提交者:
Stephane Nicoll
12月 21, 2018
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Refactor duplicate code
See gh-1452
上级
5a8b8b11
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
15 addition
and
20 deletion
+15
-20
spring-beans/src/main/java/org/springframework/beans/factory/support/AutowireUtils.java
.../springframework/beans/factory/support/AutowireUtils.java
+15
-20
未找到文件。
spring-beans/src/main/java/org/springframework/beans/factory/support/AutowireUtils.java
浏览文件 @
c15bbd67
...
...
@@ -19,6 +19,7 @@ package org.springframework.beans.factory.support;
import
java.beans.PropertyDescriptor
;
import
java.io.Serializable
;
import
java.lang.reflect.Constructor
;
import
java.lang.reflect.Executable
;
import
java.lang.reflect.InvocationHandler
;
import
java.lang.reflect.InvocationTargetException
;
import
java.lang.reflect.Method
;
...
...
@@ -28,6 +29,7 @@ import java.lang.reflect.Proxy;
import
java.lang.reflect.Type
;
import
java.lang.reflect.TypeVariable
;
import
java.util.Arrays
;
import
java.util.Comparator
;
import
java.util.Set
;
import
org.springframework.beans.BeanMetadataElement
;
...
...
@@ -49,6 +51,17 @@ import org.springframework.util.ClassUtils;
*/
abstract
class
AutowireUtils
{
private
static
final
Comparator
<
Executable
>
COMPARATOR
=
(
e1
,
e2
)
->
{
boolean
p1
=
Modifier
.
isPublic
(
e1
.
getModifiers
());
boolean
p2
=
Modifier
.
isPublic
(
e2
.
getModifiers
());
if
(
p1
!=
p2
)
{
return
(
p1
?
-
1
:
1
);
}
int
c1pl
=
e1
.
getParameterCount
();
int
c2pl
=
e2
.
getParameterCount
();
return
Integer
.
compare
(
c2pl
,
c1pl
);
};
/**
* Sort the given constructors, preferring public constructors and "greedy" ones with
* a maximum number of arguments. The result will contain public constructors first,
...
...
@@ -57,16 +70,7 @@ abstract class AutowireUtils {
* @param constructors the constructor array to sort
*/
public
static
void
sortConstructors
(
Constructor
<?>[]
constructors
)
{
Arrays
.
sort
(
constructors
,
(
c1
,
c2
)
->
{
boolean
p1
=
Modifier
.
isPublic
(
c1
.
getModifiers
());
boolean
p2
=
Modifier
.
isPublic
(
c2
.
getModifiers
());
if
(
p1
!=
p2
)
{
return
(
p1
?
-
1
:
1
);
}
int
c1pl
=
c1
.
getParameterCount
();
int
c2pl
=
c2
.
getParameterCount
();
return
(
c1pl
<
c2pl
?
1
:
(
c1pl
>
c2pl
?
-
1
:
0
));
});
Arrays
.
sort
(
constructors
,
COMPARATOR
);
}
/**
...
...
@@ -77,16 +81,7 @@ abstract class AutowireUtils {
* @param factoryMethods the factory method array to sort
*/
public
static
void
sortFactoryMethods
(
Method
[]
factoryMethods
)
{
Arrays
.
sort
(
factoryMethods
,
(
fm1
,
fm2
)
->
{
boolean
p1
=
Modifier
.
isPublic
(
fm1
.
getModifiers
());
boolean
p2
=
Modifier
.
isPublic
(
fm2
.
getModifiers
());
if
(
p1
!=
p2
)
{
return
(
p1
?
-
1
:
1
);
}
int
c1pl
=
fm1
.
getParameterCount
();
int
c2pl
=
fm2
.
getParameterCount
();
return
(
c1pl
<
c2pl
?
1
:
(
c1pl
>
c2pl
?
-
1
:
0
));
});
Arrays
.
sort
(
factoryMethods
,
COMPARATOR
);
}
/**
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录