Github user aljoscha commented on the issue:
https://github.com/apache/flink/pull/4702
I merged this, excellent work! ð
The Scala API has its own `OutputTag` because it allows us to use a Scala
feature called context bounds. The signature of the Scala `OutputTag` is
```
class OutputTag[T: TypeInformation](
id: String) extends JOutputTag[T](id, implicitly[TypeInformation[T]])
```
the `T: TypeInformation` part tells the compiler to make an object of type
`TypeInformation[T]` implicitly available. We use this to hook into the
compiler (using a feature called Scala Macros) to generate the
`TypeInformation` for `T`. You'll notice that in Java, when specifying an
`OutputTag` you have to make it an anonymous inner class. This is because we
can only analyse proper subclasses using the `TypeExtractor` in Java.
Could you please close the PR?
---