major
minor
minor
#29073
Auf abstrakte Attribute kann in transienten Objekten zugegriffen werden
Attribute können abstrakt sein. Solche Attribute müssen in Sub-Klassen redeklariert werden. Ein abstrakte Attribut ist nicht zugreifbar (weder schreibend noch lesend).
Auf solche Attribute kann aber aktuell ohne Fehler zugegriffen werden, wenn das Objekt transient ist. In diesem Fall soll aber auch ein Fehler erzeugt werden, um die Modell-Inkonsistenz besser identifizieren zu können.
Code-Migration
Bisher konnte auf abstrakte Attribute fälschlicherweise lesend zugegriffen werden (lieferte null). Mit dieser Änderung wird bei jedem Zugriff auf ein abstraktes Attribut ein Fehler geworfen. Dies kann Auswirkungen auf Fachmodelle haben, bei denen ein geerbtes abstraktes Attribut (wie z.B. StructuredElement#parent) nicht passend redeklariert wurde (i.d.R. in dem Root-Typ).
Eine auf StructuredElement basierende Struktur muss so aufgebaut sein:
// Top-level type of the structure - each type must extend it.
MyNode extends StructuredElement {
parent: MyContainer
}
// Abstract child type in the structure - each type with substructure must extend it.
abstract MyContainer extends MyNode, StructuredElementContainer {
}
// Concrete type with children.
NodeA extends MyContainer {
children: ...
}
NodeB extends MyContainer {
children: ...
}
// Concrete type without children.
NodeC extends MyNode {
}