hg: jdk8/tl/jdk: 8001642: Add Optional<T>, OptionalDouble, OptionalInt, OptionalLong

Mike Duigou mike.duigou at oracle.com
Wed Mar 20 05:11:03 UTC 2013



On Mar 19, 2013, at 9:43 PM, Rob Leland <the.rob.leland at gmail.com> wrote:

> Has the optional classes been verified to serialize/deserialize correctly? I noticed it tries to use the null object pattern with the use of EMPTY private instance. When I have implemented the NULL pattern I have used a private subclass of the object as opposed to an instance variable to insure it unmarshalls correctly with a simple override of the default desearization to insure this.
> 
They are not tagged as Serializable. Optionals are intended to be transitory. A readResolve to re-associate with the EMPTY instance would be important if they were serializable.
> I also wonder why a marker interface wasn't used or something more substantial at least for methods like isPresent().
> 
I am not sure what you are looking for in this question.
> Also why does the static factory initialization parameters use primatives as opposed to objects?
> 
The OptionalInt etc are intended to be Optional counterparts to the boxed types. If you prefer Optional of the boxed types you can use the reference Optional.
> If objects were used then there would be the oppertunity to use a abstract base class, which has the potential to move the use of isPresent() strictly  into the base class.
> 
> Finally, are these utilities critical to some other part JDK 8 that they were pushed out now as opposed to JDK 9?
> 
They are currently planned for use by the lambda streams libraries. See http://openjdk.java.net/projects/lambda/ and http://jdk8.java.net/lambda/ for more info and an implementation.

Mike
> On Mar 19, 2013 7:18 PM, <mike.duigou at oracle.com> wrote:
> Changeset: 2241a2d34085
> Author:    mduigou
> Date:      2013-03-19 16:05 -0700
> URL:       http://hg.openjdk.java.net/jdk8/tl/jdk/rev/2241a2d34085
> 
> 8001642: Add Optional<T>, OptionalDouble, OptionalInt, OptionalLong
> Reviewed-by: mduigou, darcy, alanb, jjb
> Contributed-by: Brian Goetz <brian.goetz at oracle.com>
> 
> + src/share/classes/java/util/Optional.java
> + src/share/classes/java/util/OptionalDouble.java
> + src/share/classes/java/util/OptionalInt.java
> + src/share/classes/java/util/OptionalLong.java
> + test/java/util/Optional/Basic.java
> + test/java/util/Optional/BasicDouble.java
> + test/java/util/Optional/BasicInt.java
> + test/java/util/Optional/BasicLong.java
> 




More information about the core-libs-dev mailing list