Re: Why can't i declare a static variable in a static method?
This is an OpenPGP/MIME signed message (RFC 2440 and 3156)
--------------enig8EB39D516952EB0A832126B2
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
Roedy Green schreef:
On Fri, 16 Nov 2007 03:45:58 GMT, Jim Korman <jkorman@alltel.net>
wrote, quoted or indirectly quoted someone who said :
I'm not sure I'm seeing how a method scoped static would be used.
Is the idea that the value would maintain its value between calls to
the method, but keep the scope local to the method? If so how
would you keep the declaration from overwriting the previously set
value?
It would behave exactly like a private static. It would be
initialised to 0/null. However, it would be declared in a method, and
any references to it outside that method would be illegal, detected an
compile time.
You would use it for example in
void myMethod ()
{
static Random wheel;
// first use init.
if( wheel == null ) wheel = new Random();
for (int i=0;i<100;i++)
{
System.out.println( wheel.nextInt( 6 ) );
}
}
You are declaring that wheel is purely for the use of myMethod, but
other than that in is like a private static.
To allow one-time initialisation would get fairly hairy. That is why I
side-stepped the issue. Perhaps inability to init is a reasonably
easily defined way is why Sun did not allow this. It would be a wart
no matter how it was handled.
Another syntax would be something like this where you declare outside
the method.
private to myMethod static Random wheel = new Random();
you could also have private instance methods too:
private to myMethod Random wheel = new Random();
Eiffel has =E2=80=98once=E2=80=99 methods, which seem to do exactly what =
you do here.
Might be something worth looking at, or referencing in the bug you made
at Sun=E2=80=99s.
H.
--
Hendrik Maryns
http://tcl.sfs.uni-tuebingen.de/~hendrik/
==================
http://aouw.org
Ask smart questions, get good answers:
http://www.catb.org/~esr/faqs/smart-questions.html
--------------enig8EB39D516952EB0A832126B2
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="signature.asc"
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.4-svn0 (GNU/Linux)
Comment: Using GnuPG with SUSE - http://enigmail.mozdev.org
iD8DBQFHQXpYe+7xMGD3itQRAgh6AJ9dEcJ6losjPCHVl3pdgv24EsVBaACeOIf2
V9x31fwJgiHnjS+gDzEgkwc=
=5+nN
-----END PGP SIGNATURE-----
--------------enig8EB39D516952EB0A832126B2--