Packages

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!

Linear Supertypes
FieldMutabilityPropertyMetaInformation, Property, PropertyMetaInformation, PropertyKind, AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. FieldMutability
  2. FieldMutabilityPropertyMetaInformation
  3. Property
  4. PropertyMetaInformation
  5. PropertyKind
  6. AnyRef
  7. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Type Members

  1. type Self = FieldMutability
    Definition Classes
    FieldMutabilityPropertyMetaInformation → PropertyMetaInformation

Abstract Value Members

  1. abstract def isEffectivelyFinal: Boolean

Concrete Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  5. final def asOrderedProperty: OrderedProperty
    Definition Classes
    Property
  6. def clone(): AnyRef
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @native() @throws( ... )
  7. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  8. def equals(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  9. def finalize(): Unit
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  10. final def getClass(): Class[_]
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  11. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  12. final def id: Int
    Definition Classes
    PropertyMetaInformation → PropertyKind
  13. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  14. final def isOrderedProperty: Boolean
    Definition Classes
    Property
  15. final def key: PropertyKey[FieldMutability]
    Definition Classes
    FieldMutability → PropertyMetaInformation
  16. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  17. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  18. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  19. final def synchronized[T0](arg0: ⇒ T0): T0
    Definition Classes
    AnyRef
  20. def toString(): String
    Definition Classes
    AnyRef → Any
  21. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  22. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  23. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @throws( ... )

Inherited from Property

Inherited from PropertyMetaInformation

Inherited from PropertyKind

Inherited from AnyRef

Inherited from Any

Ungrouped