Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
43131aad
D
dragonwell8_jdk
项目概览
openanolis
/
dragonwell8_jdk
通知
4
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dragonwell8_jdk
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
43131aad
编写于
12月 03, 2013
作者:
B
briangoetz
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
8028816: Add value-type notice to Optional* classes
Reviewed-by: mduigou, smarks Contributed-by: bitterfoxc@gmail.com
上级
3e11db3d
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
65 addition
and
3 deletion
+65
-3
src/share/classes/java/lang/doc-files/ValueBased.html
src/share/classes/java/lang/doc-files/ValueBased.html
+42
-0
src/share/classes/java/util/Optional.java
src/share/classes/java/util/Optional.java
+5
-0
src/share/classes/java/util/OptionalDouble.java
src/share/classes/java/util/OptionalDouble.java
+6
-1
src/share/classes/java/util/OptionalInt.java
src/share/classes/java/util/OptionalInt.java
+6
-1
src/share/classes/java/util/OptionalLong.java
src/share/classes/java/util/OptionalLong.java
+6
-1
未找到文件。
src/share/classes/java/lang/doc-files/ValueBased.html
0 → 100644
浏览文件 @
43131aad
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html
lang=
"en"
>
<head>
<title>
Value-based Classes
</title>
<link
rel=
"stylesheet"
type=
"text/css"
href=
"../../../stylesheet.css"
title=
"Style"
>
</head>
<body>
<h2
id=
"ValueBased"
>
Value-based Classes
</h2>
Some classes, such as
<code>
java.util.Optional
</code>
and
<code>
java.time.LocalDateTime
</code>
, are
<em>
value-based
</em>
. Instances of a
value-based class:
<ul>
<li>
are final and immutable (though may contain references to mutable
objects);
</li>
<li>
have implementations of
<code>
equals
</code>
,
<code>
hashCode
</code>
, and
<code>
toString
</code>
which are computed
solely from the instance's state and not from its identity or the state
of any other object or variable;
</li>
<li>
make no use of identity-sensitive operations such as reference
equality (
<code>
==
</code>
) between instances, identity hash code of
instances, or synchronization on an instances's intrinsic lock;
</li>
<li>
are considered equal solely based on
<code>
equals()
</code>
, not
based on reference equality (
<code>
==
</code>
);
</li>
<li>
do not have accessible constructors, but are instead instantiated
through factory methods which make no committment as to the identity
of returned instances;
</li>
<li>
are
<em>
freely substitutable
</em>
when equal, meaning that interchanging
any two instances
<code>
x
</code>
and
<code>
y
</code>
that are equal
according to
<code>
equals()
</code>
in any computation or method
invocation should produce no visible change in behavior.
</li>
</ul>
<p>
A program may produce unpredictable results if it attempts to distinguish two
references to equal values of a value-based class, whether directly via reference
equality or indirectly via an appeal to synchronization, identity hashing,
serialization, or any other identity-sensitive mechanism. Use of such
identity-sensitive operations on instances of value-based classes may have
unpredictable effects and should be avoided.
</p>
</body>
</html>
src/share/classes/java/util/Optional.java
浏览文件 @
43131aad
...
...
@@ -40,6 +40,11 @@ import java.util.function.Supplier;
* {@link #ifPresent(java.util.function.Consumer) ifPresent()} (execute a block
* of code if the value is present).
*
* <p>This is a <a href="../lang/doc-files/ValueBased.html">value-based</a>
* class; use of identity-sensitive operations (including reference equality
* ({@code ==}), identity hash code, or synchronization) on instances of
* {@code Optional} may have unpredictable results and should be avoided.
*
* @since 1.8
*/
public
final
class
Optional
<
T
>
{
...
...
src/share/classes/java/util/OptionalDouble.java
浏览文件 @
43131aad
...
...
@@ -31,7 +31,7 @@ import java.util.function.Supplier;
/**
* A container object which may or may not contain a {@code double} value.
* If a value is present, {@code isPresent()} will return {@code true} and
* {@code get()} will return the value.
* {@code get
AsDouble
()} will return the value.
*
* <p>Additional methods that depend on the presence or absence of a contained
* value are provided, such as {@link #orElse(double) orElse()}
...
...
@@ -39,6 +39,11 @@ import java.util.function.Supplier;
* {@link #ifPresent(java.util.function.DoubleConsumer) ifPresent()} (execute a block
* of code if the value is present).
*
* <p>This is a <a href="../lang/doc-files/ValueBased.html">value-based</a>
* class; use of identity-sensitive operations (including reference equality
* ({@code ==}), identity hash code, or synchronization) on instances of
* {@code OptionalDouble} may have unpredictable results and should be avoided.
*
* @since 1.8
*/
public
final
class
OptionalDouble
{
...
...
src/share/classes/java/util/OptionalInt.java
浏览文件 @
43131aad
...
...
@@ -31,7 +31,7 @@ import java.util.function.Supplier;
/**
* A container object which may or may not contain a {@code int} value.
* If a value is present, {@code isPresent()} will return {@code true} and
* {@code get()} will return the value.
* {@code get
AsInt
()} will return the value.
*
* <p>Additional methods that depend on the presence or absence of a contained
* value are provided, such as {@link #orElse(int) orElse()}
...
...
@@ -39,6 +39,11 @@ import java.util.function.Supplier;
* {@link #ifPresent(java.util.function.IntConsumer) ifPresent()} (execute a block
* of code if the value is present).
*
* <p>This is a <a href="../lang/doc-files/ValueBased.html">value-based</a>
* class; use of identity-sensitive operations (including reference equality
* ({@code ==}), identity hash code, or synchronization) on instances of
* {@code OptionalInt} may have unpredictable results and should be avoided.
*
* @since 1.8
*/
public
final
class
OptionalInt
{
...
...
src/share/classes/java/util/OptionalLong.java
浏览文件 @
43131aad
...
...
@@ -31,7 +31,7 @@ import java.util.function.Supplier;
/**
* A container object which may or may not contain a {@code long} value.
* If a value is present, {@code isPresent()} will return {@code true} and
* {@code get()} will return the value.
* {@code get
AsLong
()} will return the value.
*
* <p>Additional methods that depend on the presence or absence of a contained
* value are provided, such as {@link #orElse(long) orElse()}
...
...
@@ -39,6 +39,11 @@ import java.util.function.Supplier;
* {@link #ifPresent(java.util.function.LongConsumer) ifPresent()} (execute a block
* of code if the value is present).
*
* <p>This is a <a href="../lang/doc-files/ValueBased.html">value-based</a>
* class; use of identity-sensitive operations (including reference equality
* ({@code ==}), identity hash code, or synchronization) on instances of
* {@code OptionalLong} may have unpredictable results and should be avoided.
*
* @since 1.8
*/
public
final
class
OptionalLong
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录