Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell11
提交
c6cbacdf
D
dragonwell11
项目概览
openanolis
/
dragonwell11
通知
7
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dragonwell11
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
c6cbacdf
编写于
7月 18, 2017
作者:
R
redestad
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
8184603: Create ObjectStreamField signature lazily when possible
Reviewed-by: rriggs, chegar, alanb, shade
上级
7d0dcf51
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
23 addition
and
10 deletion
+23
-10
jdk/src/java.base/share/classes/java/io/ObjectStreamField.java
...rc/java.base/share/classes/java/io/ObjectStreamField.java
+23
-10
未找到文件。
jdk/src/java.base/share/classes/java/io/ObjectStreamField.java
浏览文件 @
c6cbacdf
...
...
@@ -45,16 +45,18 @@ public class ObjectStreamField
/** field name */
private
final
String
name
;
/** canonical JVM signature of field type */
/** canonical JVM signature of field type
, if given
*/
private
final
String
signature
;
/** field type (Object.class if unknown non-primitive type) */
private
final
Class
<?>
type
;
/** lazily constructed signature for the type, if no explicit signature */
private
String
typeSignature
;
/** whether or not to (de)serialize field values as unshared */
private
final
boolean
unshared
;
/** corresponding reflective field object, if any */
private
final
Field
field
;
/** offset of field value in enclosing field group */
private
int
offset
=
0
;
private
int
offset
;
/**
* Create a Serializable field with the specified type. This field should
...
...
@@ -91,8 +93,8 @@ public class ObjectStreamField
this
.
name
=
name
;
this
.
type
=
type
;
this
.
unshared
=
unshared
;
signature
=
getClassSignature
(
type
).
intern
()
;
field
=
null
;
this
.
field
=
null
;
this
.
signature
=
null
;
}
/**
...
...
@@ -106,7 +108,7 @@ public class ObjectStreamField
this
.
name
=
name
;
this
.
signature
=
signature
.
intern
();
this
.
unshared
=
unshared
;
field
=
null
;
this
.
field
=
null
;
switch
(
signature
.
charAt
(
0
))
{
case
'Z'
:
type
=
Boolean
.
TYPE
;
break
;
...
...
@@ -242,7 +244,7 @@ public class ObjectStreamField
*/
// REMIND: deprecate?
public
char
getTypeCode
()
{
return
signature
.
charAt
(
0
);
return
getSignature
()
.
charAt
(
0
);
}
/**
...
...
@@ -252,7 +254,7 @@ public class ObjectStreamField
*/
// REMIND: deprecate?
public
String
getTypeString
()
{
return
isPrimitive
()
?
null
:
signature
;
return
isPrimitive
()
?
null
:
getSignature
()
;
}
/**
...
...
@@ -284,7 +286,7 @@ public class ObjectStreamField
*/
// REMIND: deprecate?
public
boolean
isPrimitive
()
{
char
tcode
=
signature
.
charAt
(
0
);
char
tcode
=
getTypeCode
(
);
return
((
tcode
!=
'L'
)
&&
(
tcode
!=
'['
));
}
...
...
@@ -320,7 +322,7 @@ public class ObjectStreamField
* Return a string that describes this field.
*/
public
String
toString
()
{
return
signature
+
' '
+
name
;
return
getSignature
()
+
' '
+
name
;
}
/**
...
...
@@ -336,6 +338,17 @@ public class ObjectStreamField
* that signature strings are returned for primitive fields as well).
*/
String
getSignature
()
{
return
signature
;
if
(
signature
!=
null
)
{
return
signature
;
}
String
sig
=
typeSignature
;
// This lazy calculation is safe since signature can be null iff one
// of the public constructors are used, in which case type is always
// initialized to the exact type we want the signature to represent.
if
(
sig
==
null
)
{
typeSignature
=
sig
=
getClassSignature
(
type
).
intern
();
}
return
sig
;
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录