Fwd: inner class reading uninitialized value from outer class
Xen
list at xenhideout.nl
Thu Jun 23 09:47:43 UTC 2016
On Wed, 22 Jun 2016, Alex Buckley wrote:
> The access is not advisable, but definite assignment analysis cannot
> prevent it, so ultimately it's acceptable.
Alright. It seems out of the ordinary that you couldn't detect it, but
alright. Thanks for the reply in any case in advance ;-) :).
>>> Nothing odd here, but it does read a final value that has not been
>>> initialized yet. Maybe this should simply be a compiler error. I don't
>>> know what the spec says about this. It will just compile fine on
>>> openjdk 8 (I got a package error trying to install 9 on my system,
>>> hence I am using 8 for (this) now).
>>>
>>> Basically I wonder if the spec allows this, or whether this is a
>>> compiler error.
>
> The spec allows this. It is possible to do all kinds of crazy things as a
> result of the language allowing arbitrary code in instance variable
> initializers, instance initializers, static variable initializers, and static
> initializers.
Right, thanks. It was just a bug in my program ;-). Well, call it
unfamiliarity with the mechanics. I had expected a final variable
to not be able to have 2 different values during the lifetime of the
program / class. It took me a few .....minutes ;-) to discover what was
going on, but thankfully troubleshooting is much easier than in e.g. Bash,
where a million things can go wrong as a matter of joy.
Linux seems to be the agenda and the place of creating more and more
difficult problems, so that there are more problems to solve for
problem-solving minds. A way of keeping yourself busy I guess. That
saying: do not give him a fish, give him a rod with which to fish. Linux
is like: empty the river first.
Thankfully Java is very much isolated from that and this is really the
first peculiar thing I have ever come across. So well, thank you for your
reply.
Regards.
Bart.
More information about the compiler-dev
mailing list