Assertions in static blocks ?
Ulf Zibis
Ulf.Zibis at gmx.de
Sat Mar 6 03:44:43 PST 2010
Am 06.03.2010 00:33, schrieb Benedict Elliott Smith:
> It's not /generally/ possible to determine if a class initializer will
> ever be run.
>
> It would be possible to determine that, if a class were declared with
> default (package) level protection and was never referenced by another
> class in the package, that the class was not used (/so long as the
> program did not violate the protection via reflection)/; but this is
> the best that could be achieved (there is an argument to be made for
> javac to complain in this case, as it will in the case of unused
> private classes, however I am not certain it is necessary), however I
> do not think this is what you are suggesting.
>
> It would be possible, if the class were declared with default
> protection, and no class in the package referenced anything within it
> other than constant fields, to determine that the initialiser was
> never executed, I suppose.
My class *is* package private, but I can't see how it should help. ...
and currently it doesn't help to make the static initializer running.
> I'm not a developer of javac but I'm not convinced that it is a
> sufficiently useful boundary case to warrant the burden of every
> execution of javac in the world calculating it. Probably
> the increased global power usage as a result of this would raise the
> sea level another micrometer or two for very little benefit in my mind!
I like to think about power usage. That's the reason I'm working on
EUC_TW charset making it faster and consuming less memory.
Checking practically never reached static blocks seems to be nothing
than working on a system using EUC_TW charset.
-Ulf
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/compiler-dev/attachments/20100306/5c782d39/attachment.html
More information about the compiler-dev
mailing list