I see, sounds good, thanks for the clarification. Am Di., 26. Sept. 2023 um 03:29 Uhr schrieb Yunfeng Zhou < flink.zhouyunf...@gmail.com>:
> Hi Alexis, > > Thanks for the clarification. I found the second constructor on > Flink's master branch here[1], and maybe it was that we had been > commenting on different versions of Flink, and the second constructor > has not been introduced in the version you use. From the source code I > can see that the OutputTag need not be anonymous so long as the type > extraction process passes, while making it anonymous guarantees the > success of this step, so you are right that you need not bother about > this matter so long as your tests and jobs can pass. Besides, I wonder > whether being a static field influences the anonymity of a variable. > To my understanding, making it anonymous means coding `new > OutputTag<Long>("foobar"){}` instead of `new > OutputTag<Long>("foobar")`. It doesn't matter whether the prefix is > `private OutputTag<Long> tag = new OutputTag<Long>("foobar"){}` or > `private static OutputTag<Long> tag = new > OutputTag<Long>("foobar"){}`. They should be independent from each > other and OutputTag's document is correct from this aspect. > > [1] > https://github.com/apache/flink/blob/master/flink-core/src/main/java/org/apache/flink/util/OutputTag.java#L82 > > Best, > Yunfeng > > On Mon, Sep 25, 2023 at 10:57 PM Alexis Sarda-Espinosa > <sarda.espin...@gmail.com> wrote: > > > > Hi Yunfeng, > > > > Thanks for the response. I hadn't even seen the other constructor, but > it seems that the single-arg constructor works fine even if the output tag > is declared as "static final", at least in my use case. I imagine Flink > would complain about unknown types if it really can't figure it out > automatically, so maybe I can just let it be as long as tests pass, but I > was wondering if Flink really needs a non-static field to analyze type > information here. Who knows, maybe there are some scenarios where it's > really a must. > > > > Regards, > > Alexis. > > > > Am Mo., 25. Sept. 2023 um 05:17 Uhr schrieb Yunfeng Zhou < > flink.zhouyunf...@gmail.com>: > >> > >> Hi Alexis, > >> > >> If you create OutputTag with the constructor `OutputTag(String id)`, > >> you need to make it anonymous for Flink to analyze the type > >> information. But if you use the constructor `OutputTag(String id, > >> TypeInformation<T> typeInfo)`, you need not make it anonymous as you > >> have provided the type information. > >> > >> The second constructor is introduced after the document and the first > >> constructor, and I think the document might have been outdated and not > >> match with OutputTag's current behavior. A ticket and PR could be > >> added to fix the document. What do you think? > >> > >> Best, > >> Yunfeng > >> > >> On Fri, Sep 22, 2023 at 4:55 PM Alexis Sarda-Espinosa > >> <sarda.espin...@gmail.com> wrote: > >> > > >> > Hello, > >> > > >> > very quick question, the documentation for side outputs states that > an OutputTag "needs to be an anonymous inner class, so that we can analyze > the type" (this is written in a comment in the example). Is this really > true? I've seen many examples where it's a static element and it seems to > work fine. > >> > > >> > Regards, > >> > Alexis. > >> > >