You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@reef.apache.org by we...@apache.org on 2016/05/17 15:29:09 UTC
reef git commit: [REEF-1390] Compute Optional Class' methods on demand
Repository: reef
Updated Branches:
refs/heads/master cce59bbdd -> 8ecb3e676
[REEF-1390] Compute Optional Class' methods on demand
This PR:
- fixes `util/Optional` so that computation for `hashCode()` and
`toString()` are done upon function calls.
- fixes `util/Optional` so that requesting for empty `Optional`s return
a reference of a static variable instead of making new objects every time.
JIRA:
[REEF-1390](https://issues.apache.org/jira/browse/REEF-1390)
Pull Request:
This closes #1003
Project: http://git-wip-us.apache.org/repos/asf/reef/repo
Commit: http://git-wip-us.apache.org/repos/asf/reef/commit/8ecb3e67
Tree: http://git-wip-us.apache.org/repos/asf/reef/tree/8ecb3e67
Diff: http://git-wip-us.apache.org/repos/asf/reef/diff/8ecb3e67
Branch: refs/heads/master
Commit: 8ecb3e6765a11202e6d2b7f9b192bd6b66d8a061
Parents: cce59bb
Author: Won Wook SONG <ws...@gmail.com>
Authored: Mon May 16 15:23:45 2016 +0900
Committer: Markus Weimer <we...@apache.org>
Committed: Tue May 17 08:27:17 2016 -0700
----------------------------------------------------------------------
.../src/main/java/org/apache/reef/util/Optional.java | 14 +++++---------
1 file changed, 5 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/reef/blob/8ecb3e67/lang/java/reef-utils/src/main/java/org/apache/reef/util/Optional.java
----------------------------------------------------------------------
diff --git a/lang/java/reef-utils/src/main/java/org/apache/reef/util/Optional.java b/lang/java/reef-utils/src/main/java/org/apache/reef/util/Optional.java
index 93927c1..517ff3a 100644
--- a/lang/java/reef-utils/src/main/java/org/apache/reef/util/Optional.java
+++ b/lang/java/reef-utils/src/main/java/org/apache/reef/util/Optional.java
@@ -35,19 +35,15 @@ public final class Optional<T> implements Serializable {
private static final long serialVersionUID = 42L;
private final T value;
- private final String valueStr;
- private final int valueHash;
+ private static final Optional<?> EMPTY = new Optional<>();
+ private static final String EMPTY_VALUE_STR = "Optional.empty";
private Optional(final T value) {
this.value = value;
- this.valueStr = "Optional:{" + value + '}';
- this.valueHash = value.hashCode();
}
private Optional() {
this.value = null;
- this.valueStr = "OptionalvNothing";
- this.valueHash = 0;
}
/**
@@ -65,7 +61,7 @@ public final class Optional<T> implements Serializable {
* @return an Optional with no value.
*/
public static <T> Optional<T> empty() {
- return new Optional<>();
+ return (Optional<T>) EMPTY;
}
/**
@@ -122,11 +118,11 @@ public final class Optional<T> implements Serializable {
@Override
public int hashCode() {
- return this.valueHash;
+ return this.value == null ? 0 : this.value.hashCode();
}
@Override
public String toString() {
- return this.valueStr;
+ return this.value == null ? EMPTY_VALUE_STR : "Optional:{" + this.value + "}";
}
}