Johannes Luber wrote:
> I've noticed following new addition to the Token class:
>
> public static final Set legalOptions = new HashSet() {
> { add(defaultOption); }
> };
>
> Can someone explain me, what that code snippet actually does?
I think some of the explanations given before were a bit confused
or perhaps even wrong.
1) legalOptions is a static instance of an anonymous subclass of
HashSet. Thus it _cannot_ cannot have any explicitly declared
constructor (JLS §15.9.5.1): instead, a default one is provided,
as always (JLS §8.8.7).
2) The { add(defaultOption); } block is an instance initializer
(JLS §8.6) that is executed before the constructor.
The first point explains the second one: Ter wants to initialize
the set with a defaultOption element but cannot do so in a
constructor since he is not allowed to provide any explicit one
and the default one is synthetic and therefore off-limits, too.
Hopes this clears the air: you all have been generous with
explanations in the past, so I thought I'd be the lecturer
for a change ;-)
-- O.L.
_______________________________________________
antlr-dev mailing list
[email protected]
http://www.antlr.org:8080/mailman/listinfo/antlr-dev