Note: information on this page refers to Ceylon 1.0, not to the current release.
object
An object
declaration is an anonymous class that is
implicitly instantiated
exactly once at the place it is defined, and nowhere else. As such it
is also a value.
Usage
A trivial object
declaration looks like this:
object o {
/* declarations of object members */
}
Description
Type parameters and parameters
An object
declaration does not have parameters or type parameters.
Notation
This reference uses object
(in a monospaced font) when discussing an
object
declaration, which is the subject of this page. A class instance
may be referred to as an object (in the usual font). In other contexts we
often use the term anonymous class.
Toplevel objects
A toplevel object is a singleton.
Nested objects
An object
declaration may occur inside the body of a class, function,
or value declaration. In this case, a new instance of the object
is
instantiated each time the body is executed.
An object
declaration may not occur in the body of an
interface, since object
s are implicitly stateful (the
state being the reference to the instance itself).
Shared objects
An object may be annotated shared
, meaning
it is visible outside the scope in which its declaration occurs.
Actual objects
An object may be annotated actual
, meaning
that it refines an attribute of a supertype of the class or interface
to which it belongs.
Metamodel
ClassDeclaration.anonymous
can be used to determine whether a given ClassDeclaration
represents an anonymous class.
The instance is a value, so can be manipulated
ValueDeclaration
and
Value
or
Attribute
.
Members
The permitted members of object
s are classes,
interfaces, methods, attributes,
and object
s.
See also
- Anonymous classes in the Ceylon language spec