INTERFACES
Initialization of Fields in Interfaces
9.3.1
Every field declaration in the body of an interface is implicitly
public
,
static
, and
final
. It is permitted, but strongly discouraged as a matter of style,
to redundantly specify any or all of these modifiers for such fields.
A constant declaration in an interface must not include any of the modifiers
synchronized
,
transient
, or
volatile
, or a compile time error occurs.
It is possible for an interface to inherit more than one field with the same
name ( 8.3.3.3). Such a situation does not in itself cause a compile time error.
However, any attempt within the body of the interface to refer to either field by its
simple name will result in a compile time error, because such a reference is
ambiguous.
There might be several paths by which the same field declaration might be
inherited from an interface. In such a situation, the field is considered to be inher
ited only once, and it may be referred to by its simple name without ambiguity.
9.3.1 Initialization of Fields in Interfaces
Every field in the body of an interface must have an initialization expression,
which need not be a constant expression. The variable initializer is evaluated and
the assignment performed exactly once, when the interface is initialized ( 12.4).
A compile time error occurs if an initialization expression for an interface
field contains a reference by simple name to the same field or to another field
whose declaration occurs textually later in the same interface. Thus:
interface Test {
float f = j;
int j = 1;
int k = k+1;
}
causes two compile time errors, because
j
is referred to in the initialization of
f
before
j
is declared and because the initialization of
k
refers to
k
itself.
(One subtlety here is that, at run time,
fields
that are initialized with com
pile time constant values are initialized first. This applies also to
static final
fields in classes ( 8.3.2.1). This means, in particular, that these fields will never be
observed to have their default initial values ( 4.5.4), even by devious programs.
See 12.4.2 and 13.4.8 for more discussion.)
If the keyword
this
( 15.7.2) or the keyword
super
(15.10.2, 15.11) occurs
in an initialization expression for a field of an interface, then a compile time error
occurs.
187
footer
Our partners:
PHP: Hypertext Preprocessor Best Web Hosting
Java Web Hosting
Inexpensive Web Hosting
Jsp Web Hosting
Cheapest Web Hosting
Jsp Hosting
Cheap Hosting
Visionwebhosting.net Business web hosting division of Web
Design Plus. All rights reserved