Mit EMF möchte ich ein Attribut definieren, dessen Datentyp (EType) extern zu meinem EMF-Modell ist. Das heißt, der Typ, den ich möchte, ist eine normale handcodierte Java-Klasse, die nicht Teil meines EMF-Modells ist. Die Verwendung von AnySimpleType
ist ein letzter Ausweg. Ich möchte mehr Typ-Sicherheit (und weniger Typ Casting) als die Verwendung einer generischen Object
bietet.
Der Eclipse-Eigenschaften-Editor beschränkt EType auf einen vordefinierten Satz von Werten. Ich kann weder meinen eigenen Klassennamen eingeben, noch finde ich eine Möglichkeit, die gewünschte Klasse zur Liste der Optionen hinzuzufügen.
Sie können eCore-Modellen einen Datentyp hinzufügen, indem Sie einen eClassifiers
-Eintrag manuell zur * .ecore-Datei hinzufügen. (Ich konnte über die Eclipse-Benutzeroberfläche keinen Mechanismus dafür finden.)
Zum Beispiel:
%Vor%Dadurch wird die Klasse als Option für den EType im Eigenschafteneditor für EAttributes verfügbar gemacht. Es scheint es nicht für EReferences verfügbar zu machen.
Wenn Sie Xcore als Modellierungssprache verwenden, verwenden Sie
%Vor% Jetzt kann Date
als Datentyp für Attribute in Verbindung mit String
und int
verwendet werden.
Sie machen dasselbe mit Ecore, außer dass Sie den Typ nicht zuerst explizit importieren müssen - z. B.
%Vor%Ich verwende Eclipse Kepler mit EMF 2.9.1.
Wenn Sie Michael's Antwort hinzufügen, können Sie im Ecore Model Editor einfach mit der rechten Maustaste klicken und
auswählenNeues Kind - & gt; EDatentyp
und geben Sie dann Ihre Werte in der Eigenschaftenansicht ein (Name, Name des Instanztyps). Sie müssen es also nicht mehr manuell hinzufügen.
Tags und Links java eclipse-emf