[
https://issues.apache.org/jira/browse/FLINK-3002?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15003844#comment-15003844
]
Vasia Kalavri commented on FLINK-3002:
--------------------------------------
I took a look at Scala's Either and at existing types in the Java API and I
have a ton of questions :-S
Scala's Either type is implemented as an abstract class with two case
subclasses, Left and Right, which set an {{isLeft}} flag accordingly.
Is this how you think I should implement the Either Java type as well?
Looking at the existing types, it seems that apart from the type itself, we
need an {{EitherTypeInfo}} and an {{EitherSerializer}}.
The typeInfo / serializers are created with the type / class (Either) and the
types / serializers of their fields (Left and Right). How can I check inside
the typeinfo and serializer if I have a Left or Right type? I can of course
check the flag in {{(de)-serialize()}} methods, but what about the rest of the
methods (e.g. {{copy()}}, {{createInstance()}}, {{duplicate()}})?
Finally, should these go in {{flink-java}} or {{flink-core}} (what's the
difference)?
Thanks for the help!
> 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)