Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #13738
| 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> |
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 | Next — Previous in thread | Find similar | Unroll 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