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