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?


---

Reply via email to