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
  • no premature reads occur (through a virtual call in a (super) constructor)

- 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)
  • the field's value can never be observed uninitialized and the initialization itself can not be observed (except for locks required to ensure that the synchronization happens only once)

- 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
  • no premature reads occur (through a virtual call in a (super) constructor)

- 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
Source
FieldMutability.scala
Note

A field's mutability is unrelated to the immutability of the referenced objects!

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

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

    Returns this if this property inherits from OrderedProperty.

    Returns this if this property inherits from OrderedProperty.

    Used, e.g., by the framework to support debugging analyses.

    Definition Classes
    Property
  6. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... ) @native() @IntrinsicCandidate()
  7. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  8. def equals(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  9. final def getClass(): Class[_]
    Definition Classes
    AnyRef → Any
    Annotations
    @native() @IntrinsicCandidate()
  10. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native() @IntrinsicCandidate()
  11. final def id: Int

    The id uniquely identifies this property's category.

    The id uniquely identifies this property's category. All property objects of the same kind have to use the same id which is guaranteed since they share the same PropertyKey

    Definition Classes
    PropertyMetaInformationPropertyKind
  12. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  13. final def isOrderedProperty: Boolean

    Returns true if this property inherits from OrderedProperty.

    Returns true if this property inherits from OrderedProperty.

    Definition Classes
    Property
  14. final def key: PropertyKey[FieldMutability]

    The key uniquely identifies this property's category.

    The key uniquely identifies this property's category. All property objects of the same kind have to use the same key.

    In general each Property kind is expected to have a companion object that stores the unique PropertyKey.

    Definition Classes
    FieldMutabilityPropertyMetaInformation
  15. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  16. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @IntrinsicCandidate()
  17. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @IntrinsicCandidate()
  18. final def synchronized[T0](arg0: ⇒ T0): T0
    Definition Classes
    AnyRef
  19. def toString(): String
    Definition Classes
    AnyRef → Any
  20. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  21. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... ) @native()
  22. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Deprecated Value Members

  1. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] ) @Deprecated
    Deprecated

Inherited from Property

Inherited from PropertyMetaInformation

Inherited from PropertyKind

Inherited from AnyRef

Inherited from Any

Ungrouped