THRIFT-4711: Improve Immutable None Type Instantiation
diff --git a/lib/java/src/org/apache/thrift/Option.java b/lib/java/src/org/apache/thrift/Option.java
index db25ec5..d5cd309 100644
--- a/lib/java/src/org/apache/thrift/Option.java
+++ b/lib/java/src/org/apache/thrift/Option.java
@@ -24,6 +24,9 @@
*/
public abstract class Option<T> {
+ @SuppressWarnings("rawtypes")
+ private static final Option NONE = new None();
+
/**
* Whether the Option is defined or not
* @return
@@ -87,7 +90,7 @@
}
public String toString() {
- return "Some("+value.toString()+")";
+ return "Some(" + value + ")";
}
}
@@ -99,9 +102,9 @@
*/
public static <T> Option<T> fromNullable(T value) {
if (value != null) {
- return new Some<T>(value);
+ return some(value);
} else {
- return new None<T>();
+ return none();
}
}
@@ -115,7 +118,8 @@
return new Some<T>(value);
}
+ @SuppressWarnings("unchecked")
public static <T> None<T> none() {
- return new None<T>();
+ return (None<T>) NONE;
}
}
\ No newline at end of file