[ 
https://issues.apache.org/jira/browse/FLINK-3002?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15003853#comment-15003853
 ] 

Fabian Hueske commented on FLINK-3002:
--------------------------------------

I would not implement Either as an abstract class, but as a class with two 
generics {{Either<Left, Right>}} and three constructors:
- Either() (empty default constructor)
- Either(Left)
- Either(Right)

Also add two methods {{isLeft()}} and {{isRight()}} and getters to fetch the 
left or right value.

It is correct, that you will also need a TypeInformation and a Serializer. We 
also need a TypeComparator if we want to use Either as a key.
The TypeInformation is not used at execution time and does not need to 
distinguish left or right Either objects.
The serializer can check if an Either object is left or right (by calling 
{{o.isLeft()}}) and serialize a byte flag to distinguish the cases when objects 
are deserialized.

The Either type should to to {{flink-java}} similar to the tuple types.

> Add an EitherType to the Java API
> ---------------------------------
>
>                 Key: FLINK-3002
>                 URL: https://issues.apache.org/jira/browse/FLINK-3002
>             Project: Flink
>          Issue Type: New Feature
>          Components: Java API
>    Affects Versions: 0.10
>            Reporter: Stephan Ewen
>            Assignee: Vasia Kalavri
>             Fix For: 1.0
>
>
> Either types are recurring patterns and should be serialized efficiently, so 
> it makes sense to add them to the core Java API.
> Since Java does not have such a type as of Java 8, we would need to add our 
> own version.
> The Scala API handles the Scala Either Type already efficiently. I would not 
> use the Scala Either Type in the Java API, since we are trying to get the 
> {{flink-java}} project "Scala free" for people that don't use Scala and o not 
> want to worry about Scala version matches and mismatches.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to