Re: Why can nsmc, local classes or anonymous classes have static members ?
Arne Vajh?j wrote:
On 15-12-2009 17:02, Roedy Green wrote:
On Sun, 13 Dec 2009 20:32:34 -0500, Arne Vajh?j<arne@vajhoej.dk>
wrote, quoted or indirectly quoted someone who said :
I guess you could do that.
But then what benefits would that static method provide
that a similar non-static method would not provide?
same thing a normal static method does: single copy of variable
common to all instances, persistence, ability to count instances.
But the static method can not be called from a static context,
so whatever it does could be achieved by making it non static.
And regarding counting instances, then look at what Mike Schilling
considers sensible.
Perhaps I wasn't clear, becasue what I'm thinking counts instances
quite well, e.g.
class Outer
{
class Inner
{
static int count;
Inner()
{
count++;
}
}
}
"count" willl give the number of Inner.Outer instances ever created,
regardless of the value of the enclosing Inner instance. Though in
fact what I've usually wanted a static method for is when Inner needs
a cache, e.g.
class Outer
{
class Inner
{
static Map<String, Schema>schemas = new HashMap<String,
Schema>();
private Schema schema;
Inner(String namespace)
{
synchronized(schemas)
{
schema = schemas.get(namespace);
if (schema == null)
{
schema = loadSchema(namespace);
schemas.put(namespace, schema);
}
}
}
}
}
Again, I want to use the same cache regardless of the value of the
enclosing instance.