sealed trait FieldMutability extends Property with FieldMutabilityPropertyMetaInformation
Identifies those fields which are effectively final; that is, those fields which are not
read before the final value is set. Field reads which are just done to test if the field
still contains the default JVM value are ignored if no other field-read can bypass the test.
As in case of final fields, field writes done by (static) initializers w.r.t. the currently
constructed (class) object generally do not prevent the field from being effectively final.
Hence, a user of the respective class/object will always see the same value. It is also possible that the initializing field write is not done by the class itself but done by a specific caller that is guaranteed to be always executed before the field is (read) accessed elsewhere. Here, the initialization phase for a specific field always starts with the call of a constructor and ends when the field is set to some value (in a thread-safe manner) or the field is potentially read.
Property Extensions
- declared final
- actually directly declared as final
- lazy initialized
- all field writes and reads are known, i.e., in case of ...
- ... open package assumption: all private fields
- ... closed package assumption: all private and package private fields and all protected and public fields that are not accessible by clients of the package
- ... applications: all fields
- all writes have to be guarded by a test if the field still has the default value
- all reads happen after initialization of the field and are either also guarded by a test or happen directly after a field write
- if the field is set to a value that is not the default value, the field is in all
cases (even in case of concurrent execution!) set to the same value (
0,0l,0f,0d,null)
- effectively final
- all field writes are known (see above)
- all writes happen unconditionally at initialization time
- as soon as the field is read no more writes will ever occur
- non-final
- a field is non final if non of the the previous cases holds
- e.g., not all reads and writes of the field are known
- Note
A field's mutability is unrelated to the immutability of the referenced objects!
- Alphabetic
- By Inheritance
- FieldMutability
- FieldMutabilityPropertyMetaInformation
- Property
- PropertyMetaInformation
- PropertyKind
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Type Members
-
type
Self = FieldMutability
- Definition Classes
- FieldMutabilityPropertyMetaInformation → PropertyMetaInformation
Abstract Value Members
- abstract def isEffectivelyFinal: Boolean
Concrete Value Members
-
final
def
!=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
##(): Int
- Definition Classes
- AnyRef → Any
-
final
def
==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
-
final
def
asOrderedProperty: OrderedProperty
- Definition Classes
- Property
-
def
clone(): AnyRef
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @native() @throws( ... )
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
finalize(): Unit
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
final
def
id: Int
- Definition Classes
- PropertyMetaInformation → PropertyKind
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
final
def
isOrderedProperty: Boolean
- Definition Classes
- Property
-
final
def
key: PropertyKey[FieldMutability]
- Definition Classes
- FieldMutability → PropertyMetaInformation
-
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
toString(): String
- Definition Classes
- AnyRef → Any
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @throws( ... )