Class static blocks

Jeff Dyer jodyer at adobe.com
Sun Apr 20 16:50:21 PDT 2008




On 4/20/08 11:52 AM, Michael O'Brien wrote:

> I wanted to clarify the meaning of a static block. Consider:
> 
> class Shape {
> 
> static var count
> var origin
> 
> static {
> // Is this static initialization code?
> 
> count = 1
> }
> 
> {
> 
> // Is this instance initialization code?
> 
> origin = 0  
> }
> }
> 
> 
> Reading the latest draft of the grammar I'm assuming that you must now
> put static init code inside a static {} block. Is this correct?

That is correct.

> Does that mean that other directives outside of methods and static
> blocks are instance initialization code?

No, statements are no longer allowed at the top level of a class definition.
Class initialization code goes in 'static {...}' blocks, and instance
initialization code goes in constructors, of course. Multiple 'static {...}'
blocks are allowed.

Jd




More information about the Es4-discuss mailing list