Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #13738

Re: "static context"

From Lew <noone@lewscanon.com>
Newsgroups comp.lang.java.programmer
Subject Re: "static context"
Date 2012-04-21 04:15 -0700
Organization albasani.net
Message-ID <jmu4rs$9ts$1@news.albasani.net> (permalink)
References <terminology-20120420003700@ram.dialup.fu-berlin.de> <580829.126.1334881065985.JavaMail.geo-discussion-forums@pbcgs4> <jmqjhq$b7b$1@dont-email.me> <verbs-sentences-20120420062533@ram.dialup.fu-berlin.de> <static-context-20120421062441@ram.dialup.fu-berlin.de>

Show all headers | View raw


On 04/20/2012 09:27 PM, Stefan Ram wrote:
> ram@zedat.fu-berlin.de (Stefan Ram) writes:
>>>>> java.lang.Thread     . dumpStack() java.lang.System.out . print( 2 )
>> A »type name« is a special kind of context, it is a static context.
>
>    JLS 7 defines »static context« in 8.1.3, but the compiler
>    uses another meaning of »static context«.
>
>    For example, the call »dumpStack()« in
>
> class A { void m(){ java.lang.Thread.dumpStack(); }}
>
>    is /not/ in a static context according to JLS 7 8.1.3,

Incorrect. The statement 'Thread.dumpStack();' is not in a static context. The 
simple method name 'dumpStack()' is.

I see in
<http://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#jls-8.1.3>
that is says,
"A statement or expression occurs in a static context if and only if the 
innermost method, constructor, instance initializer, static initializer, field 
initializer, or explicit constructor invocation statement enclosing the 
statement or expression is a static method, a static initializer, the variable 
initializer of a static variable, or an explicit constructor invocation 
statement (§8.8.7)."

There are two contexts operating here. 'dumpStack()' occurs in a static 
context established by the symbol 'Thread' and the dot. The entire expression, 
or statement, 'Thread.dumpStack();' [*] occurs in a non-static context 
established by the opening curly brace of the instance method definition.

>    but /is/ according to javac.
>
>    One reason for this possibly is that JLS 1 did not yet
>    define »static context«, so the wording of the compiler
>    message might predate the first definition of »static
>    context« in the JLS.

[*] Why the heck do you insist on calling out 'java.lang'? It's highly 
unconventional and not at all idiomatic for Java.

-- 
Lew
Honi soit qui mal y pense.
http://upload.wikimedia.org/wikipedia/commons/c/cf/Friz.jpg

Back to comp.lang.java.programmer | Previous | NextPrevious in thread | Find similar | Unroll thread


Thread

Re: terminology Lew <lewbloch@gmail.com> - 2012-04-19 17:17 -0700
  Re: terminology markspace <-@.> - 2012-04-19 20:01 -0700
    Re: terminology Arved Sandstrom <asandstrom3minus1@eastlink.ca> - 2012-04-20 07:09 -0300
    Re: terminology Lew <noone@lewscanon.com> - 2012-04-20 08:05 -0700
    Re: terminology markspace <-@.> - 2012-04-20 11:03 -0700
    Re: "static context" Lew <noone@lewscanon.com> - 2012-04-21 04:15 -0700

csiph-web