Class static blocks

Michael O'Brien mob at mbedthis.com
Sun Apr 20 21:16:21 PDT 2008


Jeff,

What happens to "var" declarations inside a static block?
Are they converted to static declarations or disallowed?

Similarly, I presume a redundant "static" attribute inside a static  
block is allowed.

Michael


On Apr 20, 2008, at 4:50 PM, Jeff Dyer wrote:
>
>
>
> 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